From 8c865d519eb707406df28ce77c990282a4bcf708 Mon Sep 17 00:00:00 2001 From: goalongway Date: Sun, 29 Sep 2024 11:49:41 +0800 Subject: [PATCH] modify --- README.md | 51 +- applications/cmd/builder/main.go | 8 +- applications/cmd/listener/main.go | 10 +- applications/cmd/proposer/main.go | 10 +- applications/cmd/validator/main.go | 10 +- applications/go.mod | 2 +- applications/internal/config/config.go | 2 +- applications/internal/initiates/db.go | 2 +- applications/internal/models/deposit.go | 2 +- applications/internal/models/messages.go | 2 +- applications/internal/models/signatures.go | 2 +- applications/internal/models/sync_tasks.go | 2 +- .../internal/serves/builder/builder.go | 10 +- .../serves/listener/bitcoin/bitcoin.go | 14 +- .../serves/listener/ethereum/ethereum.go | 12 +- .../internal/serves/proposer/proposer.go | 14 +- .../internal/serves/validator/validator.go | 15 +- .../internal/serves/validator/validator2.go | 112 - applications/internal/utils/aa/aa.go | 2 +- .../utils/ethereum/event/message/call.go | 2 +- .../utils/ethereum/event/message/send.go | 2 +- .../utils/ethereum/message/message.go | 12 +- applications/internal/utils/tx/tx.go | 10 +- applications/internal/vo/vo.go | 2 +- contracts/.openzeppelin/unknown-1123.json | 1742 ----- .../AccessControlUpgradeable.dbg.json | 4 - .../AccessControlUpgradeable.json | 259 - .../Initializable.sol/Initializable.dbg.json | 4 - .../Initializable.sol/Initializable.json | 34 - .../UUPSUpgradeable.dbg.json | 4 - .../UUPSUpgradeable.sol/UUPSUpgradeable.json | 139 - .../ContextUpgradeable.dbg.json | 4 - .../ContextUpgradeable.json | 34 - .../EIP712Upgradeable.dbg.json | 4 - .../EIP712Upgradeable.json | 83 - .../ERC165Upgradeable.dbg.json | 4 - .../ERC165Upgradeable.json | 53 - .../IAccessControl.dbg.json | 4 - .../IAccessControl.sol/IAccessControl.json | 204 - .../interfaces/IERC5267.sol/IERC5267.dbg.json | 4 - .../interfaces/IERC5267.sol/IERC5267.json | 60 - .../IERC1822Proxiable.dbg.json | 4 - .../draft-IERC1822.sol/IERC1822Proxiable.json | 24 - .../ERC1967Utils.sol/ERC1967Utils.dbg.json | 4 - .../ERC1967Utils.sol/ERC1967Utils.json | 94 - .../proxy/beacon/IBeacon.sol/IBeacon.dbg.json | 4 - .../proxy/beacon/IBeacon.sol/IBeacon.json | 24 - .../utils/Address.sol/Address.dbg.json | 4 - .../contracts/utils/Address.sol/Address.json | 38 - .../StorageSlot.sol/StorageSlot.dbg.json | 4 - .../utils/StorageSlot.sol/StorageSlot.json | 10 - .../utils/Strings.sol/Strings.dbg.json | 4 - .../contracts/utils/Strings.sol/Strings.json | 27 - .../cryptography/ECDSA.sol/ECDSA.dbg.json | 4 - .../utils/cryptography/ECDSA.sol/ECDSA.json | 38 - .../MessageHashUtils.dbg.json | 4 - .../MessageHashUtils.json | 10 - .../IERC165.sol/IERC165.dbg.json | 4 - .../introspection/IERC165.sol/IERC165.json | 30 - .../utils/math/Math.sol/Math.dbg.json | 4 - .../contracts/utils/math/Math.sol/Math.json | 16 - .../math/SignedMath.sol/SignedMath.dbg.json | 4 - .../utils/math/SignedMath.sol/SignedMath.json | 10 - .../abe90607c0f29f9069da9533b2d74eec.json | 1 - .../af6b6b3d7f4b7811cb30d97c6e1d4bb9.json | 1 - .../BusinessContractExample.dbg.json | 4 - .../BusinessContractExample.json | 524 -- .../IBusinessContract.dbg.json | 4 - .../IBusinessContract.json | 45 - contracts/cache/solidity-files-cache.json | 645 +- contracts/cache/validations.json | 6568 +++++++++++++++++ .../{ => example}/BusinessContractExample.sol | 0 .../contracts/business/tokenLocker/Lock.sol | 86 + .../business/tokenLocker/MyERC20.sol | 32 + .../{MessageBridge.sol => MessageSharing.sol} | 67 +- contracts/hardhat.config.js | 4 +- contracts/scripts/business/grant_role.js | 3 +- contracts/scripts/message/call.js | 9 +- contracts/scripts/message/deploy.js | 6 +- contracts/scripts/message/grant_role.js | 11 +- contracts/scripts/message/revoke_role.js | 6 +- contracts/scripts/message/send.js | 16 +- contracts/scripts/message/set_weight.js | 10 +- contracts/scripts/message/upgrade.js | 9 +- 84 files changed, 7403 insertions(+), 3963 deletions(-) delete mode 100644 applications/internal/serves/validator/validator2.go delete mode 100644 contracts/.openzeppelin/unknown-1123.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol/EIP712Upgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/IERC5267.sol/IERC5267.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/IERC5267.sol/IERC5267.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json delete mode 100644 contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json delete mode 100644 contracts/artifacts/build-info/abe90607c0f29f9069da9533b2d74eec.json delete mode 100644 contracts/artifacts/build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json delete mode 100644 contracts/artifacts/contracts/business/BusinessContractExample.sol/BusinessContractExample.dbg.json delete mode 100644 contracts/artifacts/contracts/business/BusinessContractExample.sol/BusinessContractExample.json delete mode 100644 contracts/artifacts/contracts/business/BusinessContractExample.sol/IBusinessContract.dbg.json delete mode 100644 contracts/artifacts/contracts/business/BusinessContractExample.sol/IBusinessContract.json rename contracts/contracts/business/{ => example}/BusinessContractExample.sol (100%) create mode 100644 contracts/contracts/business/tokenLocker/Lock.sol create mode 100644 contracts/contracts/business/tokenLocker/MyERC20.sol rename contracts/contracts/message/{MessageBridge.sol => MessageSharing.sol} (68%) diff --git a/README.md b/README.md index 02acb869..b7fb1c3a 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ -# b2-message-channel +# b2-message-sharing -Message-channel is a blockchain cross-chain messaging mechanism. +Message-sharing is a blockchain cross-chain messaging mechanism. ## 1. Contracts ### 1.1 Contracts interface -#### 1.1.1 Message Bridge Interface +#### 1.1.1 Message Sharing Interface ``` -interface IB2MessageBridge { +interface IB2MessageSharing { /** * Get the validator role for a specific chain @@ -24,11 +24,11 @@ interface IB2MessageBridge { * @param from_id The ID of the cross-chain message, used to uniquely identify the message. * @param from_sender The address of the sender on the originating chain. * @param to_chain_id The ID of the target chain, where the message will be sent. - * @param contract_address The address of the target contract that will receive the cross-chain message. - * @param data The input data for the target contract's cross-chain call. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. * @return bytes32 The generated message hash, used for subsequent verification and processing. */ - function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes calldata data) external view returns (bytes32); + function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external view returns (bytes32); /** * Verify the legitimacy of a message @@ -36,12 +36,12 @@ interface IB2MessageBridge { * @param from_id The ID of the cross-chain message, used to check if the message has already been processed. * @param from_sender The address of the sender on the originating chain, used to verify the sender's legitimacy. * @param to_chain_id The ID of the target chain, indicating where the message will be sent. - * @param contract_address The address of the target contract that will receive the cross-chain message. - * @param data The input data for the target contract's cross-chain call. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. * @param signature The signature of the message, used to verify its legitimacy and integrity. * @return bool Returns true if the verification succeeds, and false if it fails. */ - function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes calldata data, bytes calldata signature) external view returns (bool); + function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message, bytes calldata signature) external view returns (bool); /** * Set the weight for message processing @@ -53,22 +53,22 @@ interface IB2MessageBridge { /** * Request cross-chain message data * @param to_chain_id The ID of the target chain, specifying where the message will be sent. - * @param contract_address The address of the target contract that will receive the cross-chain message. - * @param data The input data for the target contract's cross-chain call. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. * @return from_id The ID of the cross-chain message, returning a unique identifier to track the request. */ - function call(uint256 to_chain_id, address contract_address, bytes calldata data) external returns (uint256 from_id); + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); /** * Confirm cross-chain message data * @param from_chain_id The ID of the originating chain, used to validate the source of the message. * @param from_id The ID of the cross-chain message, used to check if the message has already been processed. * @param from_sender The address of the sender on the originating chain (msg.sender), used to determine the sender's security based on business needs. - * @param contract_address The address of the target contract, indicating where the message will be sent (can be a contract on the target chain or the current chain). - * @param data The input data for the target contract's cross-chain call. + * @param to_business_contract The address of the target contract, indicating where the message will be sent (can be a contract on the target chain or the current chain). + * @param to_message The input data for the target contract's cross-chain call. * @param signatures An array of signatures used to verify the legitimacy of the message, ensuring only authorized senders can send the message. */ - function send(uint256 from_chain_id, uint256 from_id, address from_sender, address contract_address, bytes calldata data, bytes[] calldata signatures) external; + function send(uint256 from_chain_id, uint256 from_id, address from_sender, address to_business_contract, bytes calldata to_message, bytes[] calldata signatures) external; /** * Set the validator role for a specific chain @@ -81,8 +81,8 @@ interface IB2MessageBridge { // Event declarations event SetWeight(uint256 chain_id, uint256 weight); // Event emitted when weight is set event SetValidatorRole(uint256 chain_id, address account, bool valid); // Event emitted when validator role is set - event Send(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes data); // Event emitted when a message is sent - event Call(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes data); // Event emitted when a message call is made + event Send(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes to_message); // Event emitted when a message is sent + event Call(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes to_message); // Event emitted when a message call is made } ``` @@ -95,23 +95,22 @@ interface IBusinessContract { * @param from_chain_id The ID of the originating chain, used to validate the source of the message. * @param from_id The ID of the cross-chain message, used to check if the message has already been processed to prevent duplication. * @param from_sender The address of the sender on the originating chain, used to verify the sender's legitimacy (business needs may dictate whether verification is necessary). - * @param data The input data for processing the cross-chain message, which may need to be decoded based on byte encoding rules. + * @param message The input data for processing the cross-chain message, which may need to be decoded based on byte encoding rules. * @return success Indicates whether the message processing was successful, returning true for success and false for failure. */ - function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success); + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external returns (bool success); } - ``` ### 1.2 Contracts code -#### 1.2.1 Message Bridge +#### 1.2.1 Message Sharing -[MessageBridge.sol](./contracts/contracts/message/MessageBridge.sol) +[MessageSharing.sol](./contracts/contracts/message/MessageSharing.sol) #### 1.2.2 Business Contract Example -[BusinessContractExample.sol](./contracts/contracts/business/BusinessContractExample.sol) +[BusinessContractExample.sol](contracts/contracts/business/example/BusinessContractExample.sol) ### 1.3 Deploy @@ -183,14 +182,14 @@ yarn hardhat run scripts/business/revoke_role.js --network b2dev #### 1.4.1 Bsquared testnet ``` -B2MessageBridge: 0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5 +B2MessageSharing: 0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8 BusinessContract: 0x804641e29f5F63a037022f0eE90A493541cCb869 ``` #### 1.4.2 Arbitrum sepolia ``` -B2MessageBridge: 0x2A82058E46151E337Baba56620133FC39BD5B71F +B2MessageSharing: 0x2A82058E46151E337Baba56620133FC39BD5B71F BusinessContract: 0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534 ``` diff --git a/applications/cmd/builder/main.go b/applications/cmd/builder/main.go index 43550d36..9353d33b 100644 --- a/applications/cmd/builder/main.go +++ b/applications/cmd/builder/main.go @@ -1,10 +1,10 @@ package main import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/initiates" - "bsquared.network/b2-message-channel-applications/internal/serves/builder" - "bsquared.network/b2-message-channel-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/initiates" + "bsquared.network/b2-message-sharing-applications/internal/serves/builder" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" "encoding/json" "flag" "fmt" diff --git a/applications/cmd/listener/main.go b/applications/cmd/listener/main.go index 899aef94..fdccc9b5 100644 --- a/applications/cmd/listener/main.go +++ b/applications/cmd/listener/main.go @@ -1,11 +1,11 @@ package main import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/initiates" - "bsquared.network/b2-message-channel-applications/internal/serves/listener/bitcoin" - "bsquared.network/b2-message-channel-applications/internal/serves/listener/ethereum" - "bsquared.network/b2-message-channel-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/initiates" + "bsquared.network/b2-message-sharing-applications/internal/serves/listener/bitcoin" + "bsquared.network/b2-message-sharing-applications/internal/serves/listener/ethereum" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" "encoding/json" "flag" "fmt" diff --git a/applications/cmd/proposer/main.go b/applications/cmd/proposer/main.go index 907a6151..2e30cb8b 100644 --- a/applications/cmd/proposer/main.go +++ b/applications/cmd/proposer/main.go @@ -1,11 +1,11 @@ package main import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/initiates" - "bsquared.network/b2-message-channel-applications/internal/serves/proposer" - "bsquared.network/b2-message-channel-applications/internal/utils/log" - "bsquared.network/b2-message-channel-applications/internal/vo" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/initiates" + "bsquared.network/b2-message-sharing-applications/internal/serves/proposer" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/vo" "encoding/json" "flag" "fmt" diff --git a/applications/cmd/validator/main.go b/applications/cmd/validator/main.go index 5f148dfb..0ad8317a 100644 --- a/applications/cmd/validator/main.go +++ b/applications/cmd/validator/main.go @@ -1,11 +1,11 @@ package main import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/initiates" - "bsquared.network/b2-message-channel-applications/internal/serves/validator" - "bsquared.network/b2-message-channel-applications/internal/utils/log" - "bsquared.network/b2-message-channel-applications/internal/vo" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/initiates" + "bsquared.network/b2-message-sharing-applications/internal/serves/validator" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/vo" "encoding/json" "flag" "fmt" diff --git a/applications/go.mod b/applications/go.mod index fc157de8..ec675194 100644 --- a/applications/go.mod +++ b/applications/go.mod @@ -1,4 +1,4 @@ -module bsquared.network/b2-message-channel-applications +module bsquared.network/b2-message-sharing-applications go 1.22 diff --git a/applications/internal/config/config.go b/applications/internal/config/config.go index c9ab3d24..9741f619 100644 --- a/applications/internal/config/config.go +++ b/applications/internal/config/config.go @@ -1,7 +1,7 @@ package config import ( - "bsquared.network/b2-message-channel-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/enums" "fmt" "github.com/pkg/errors" "github.com/spf13/viper" diff --git a/applications/internal/initiates/db.go b/applications/internal/initiates/db.go index 1253ecf3..4af095b0 100644 --- a/applications/internal/initiates/db.go +++ b/applications/internal/initiates/db.go @@ -1,7 +1,7 @@ package initiates import ( - "bsquared.network/b2-message-channel-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/config" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" diff --git a/applications/internal/models/deposit.go b/applications/internal/models/deposit.go index 8a1b67b0..f740491a 100644 --- a/applications/internal/models/deposit.go +++ b/applications/internal/models/deposit.go @@ -1,7 +1,7 @@ package models import ( - "bsquared.network/b2-message-channel-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/enums" "time" ) diff --git a/applications/internal/models/messages.go b/applications/internal/models/messages.go index ed916ce2..f8c3a764 100644 --- a/applications/internal/models/messages.go +++ b/applications/internal/models/messages.go @@ -1,6 +1,6 @@ package models -import "bsquared.network/b2-message-channel-applications/internal/enums" +import "bsquared.network/b2-message-sharing-applications/internal/enums" type Message struct { Base diff --git a/applications/internal/models/signatures.go b/applications/internal/models/signatures.go index 53d5de2e..4a5e8fa7 100644 --- a/applications/internal/models/signatures.go +++ b/applications/internal/models/signatures.go @@ -1,7 +1,7 @@ package models import ( - "bsquared.network/b2-message-channel-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/enums" "github.com/shopspring/decimal" ) diff --git a/applications/internal/models/sync_tasks.go b/applications/internal/models/sync_tasks.go index 829ed46f..73141d10 100644 --- a/applications/internal/models/sync_tasks.go +++ b/applications/internal/models/sync_tasks.go @@ -1,6 +1,6 @@ package models -import "bsquared.network/b2-message-channel-applications/internal/enums" +import "bsquared.network/b2-message-sharing-applications/internal/enums" type SyncTask struct { Base diff --git a/applications/internal/serves/builder/builder.go b/applications/internal/serves/builder/builder.go index 6595ec0e..8d7ccb9e 100644 --- a/applications/internal/serves/builder/builder.go +++ b/applications/internal/serves/builder/builder.go @@ -1,11 +1,11 @@ package builder import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/enums" - "bsquared.network/b2-message-channel-applications/internal/models" - msg "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/message" - "bsquared.network/b2-message-channel-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/models" + msg "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" "bytes" "context" "crypto/ecdsa" diff --git a/applications/internal/serves/listener/bitcoin/bitcoin.go b/applications/internal/serves/listener/bitcoin/bitcoin.go index abf15092..5cb99cb9 100644 --- a/applications/internal/serves/listener/bitcoin/bitcoin.go +++ b/applications/internal/serves/listener/bitcoin/bitcoin.go @@ -1,13 +1,13 @@ package bitcoin import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/enums" - "bsquared.network/b2-message-channel-applications/internal/models" - "bsquared.network/b2-message-channel-applications/internal/types" - "bsquared.network/b2-message-channel-applications/internal/utils/aa" - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/message" - "bsquared.network/b2-message-channel-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/models" + "bsquared.network/b2-message-sharing-applications/internal/types" + "bsquared.network/b2-message-sharing-applications/internal/utils/aa" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" "bytes" "context" "encoding/hex" diff --git a/applications/internal/serves/listener/ethereum/ethereum.go b/applications/internal/serves/listener/ethereum/ethereum.go index 68a63f17..1b8d7e49 100644 --- a/applications/internal/serves/listener/ethereum/ethereum.go +++ b/applications/internal/serves/listener/ethereum/ethereum.go @@ -1,12 +1,12 @@ package ethereum import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/enums" - "bsquared.network/b2-message-channel-applications/internal/models" - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/event" - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/event/message" - "bsquared.network/b2-message-channel-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/models" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event/message" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" "context" "fmt" "github.com/ethereum/go-ethereum" diff --git a/applications/internal/serves/proposer/proposer.go b/applications/internal/serves/proposer/proposer.go index 81c92d1c..68cb534c 100644 --- a/applications/internal/serves/proposer/proposer.go +++ b/applications/internal/serves/proposer/proposer.go @@ -1,13 +1,13 @@ package proposer import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/enums" - "bsquared.network/b2-message-channel-applications/internal/models" - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/message" - "bsquared.network/b2-message-channel-applications/internal/utils/log" - "bsquared.network/b2-message-channel-applications/internal/utils/tx" - "bsquared.network/b2-message-channel-applications/internal/vo" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/models" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/utils/tx" + "bsquared.network/b2-message-sharing-applications/internal/vo" "bufio" "context" "crypto/ecdsa" diff --git a/applications/internal/serves/validator/validator.go b/applications/internal/serves/validator/validator.go index 55ff0d96..dfd06879 100644 --- a/applications/internal/serves/validator/validator.go +++ b/applications/internal/serves/validator/validator.go @@ -1,12 +1,12 @@ package validator import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/enums" - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/message" - "bsquared.network/b2-message-channel-applications/internal/utils/log" - "bsquared.network/b2-message-channel-applications/internal/utils/tx" - "bsquared.network/b2-message-channel-applications/internal/vo" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" + "bsquared.network/b2-message-sharing-applications/internal/utils/log" + "bsquared.network/b2-message-sharing-applications/internal/utils/tx" + "bsquared.network/b2-message-sharing-applications/internal/vo" "bufio" "context" "crypto/ecdsa" @@ -196,7 +196,8 @@ func (v *Validator) handleMessage(msg vo.Message) error { } else { return errors.New("rpc invalid") } - + fmt.Printf("data :%s\n", msg.Data) + fmt.Printf("validator :%s\n", crypto_.PubkeyToAddress(v.pk.PublicKey)) signature, err := message.SignMessageSend(msg.ChainId, msg.ToMessageContract, msg.FromChainId, common.HexToHash(msg.FromId).Big(), msg.FromSender, msg.ToChainId, msg.ToContractAddress, msg.Data, v.pk) if err != nil { v.logger.Errorf("validator sign err: %s", err) diff --git a/applications/internal/serves/validator/validator2.go b/applications/internal/serves/validator/validator2.go deleted file mode 100644 index 5c930820..00000000 --- a/applications/internal/serves/validator/validator2.go +++ /dev/null @@ -1,112 +0,0 @@ -package validator - -// -//import ( -// "bsquared.network/b2-message-channel-applications/internal/config" -// "bsquared.network/b2-message-channel-applications/internal/enums" -// "bsquared.network/b2-message-channel-applications/internal/models" -// "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/message" -// "bsquared.network/b2-message-channel-applications/internal/utils/log" -// "encoding/json" -// "github.com/ethereum/go-ethereum/common" -// "github.com/ethereum/go-ethereum/crypto" -// "github.com/ethereum/go-ethereum/ethclient" -// "github.com/pkg/errors" -// "gorm.io/gorm" -// "sync" -// "time" -//) -// -//type Validator struct { -// config config.Blockchain -// db *gorm.DB -// rpc *ethclient.Client -// key string -// logger *log.Logger -//} -// -//func NewValidator(key string, logConfig config.LogConfig, config config.Blockchain, db *gorm.DB, rpc *ethclient.Client) *Validator { -// return &Validator{ -// config: config, -// db: db, -// rpc: rpc, -// key: key, -// logger: log.NewLogger(config.Name, logConfig.Level), -// } -//} -// -//func (v *Validator) Start() { -// go v.validate() -//} -// -//func (v *Validator) validate() { -// duration := time.Millisecond * time.Duration(v.config.BlockInterval) -// for { -// list, err := v.validatingCallMessage(10) -// if err != nil { -// v.logger.Errorf("Get pending call message error: %v\n", err) -// time.Sleep(duration) -// continue -// } -// if len(list) == 0 { -// v.logger.Error("Get pending call message list length is 0\n") -// time.Sleep(duration) -// continue -// } -// -// var wg sync.WaitGroup -// for _, message := range list { -// wg.Add(1) -// go func(_wg *sync.WaitGroup, message models.Message) { -// defer _wg.Done() -// err = v.validateMessage(message) -// if err != nil { -// v.logger.Errorf("Validate message error: %v\n", err) -// } -// }(&wg, message) -// } -// wg.Wait() -// } -//} -// -//func (v *Validator) validateMessage(msg models.Message) error { -// var signatures []string -// //var ValidatorMap map[string]string -// //for _, validatorKey := range ValidatorMap { -// _key, err := crypto.ToECDSA(common.FromHex(v.key)) -// if err != nil { -// v.logger.Errorf("ToECDSA error: %v\n", err) -// return errors.WithStack(err) -// } -// signature, err := message.SignMessageSend(v.config.ChainId, v.config.ListenAddress, msg.FromChainId, common.HexToHash(msg.FromId).Big(), msg.FromSender, msg.ToChainId, msg.ToContractAddress, msg.ToBytes, _key) -// if err != nil { -// v.logger.Errorf("Sign message error: %v\n", err) -// return errors.WithStack(err) -// } -// signatures = append(signatures, signature) -// //} -// -// _signatures, err := json.Marshal(&signatures) -// if err != nil { -// v.logger.Errorf("Marshal signatures error: %v\n", err) -// return errors.WithStack(err) -// } -// -// err = v.db.Model(models.Message{}).Where("`id`=? AND `status`=?", msg.Id, enums.MessageStatusValidating). -// Update("signatures", string(_signatures)). -// Update("status", enums.MessageStatusPending).Error -// if err != nil { -// v.logger.Errorf("Update message error: %v\n", err) -// return errors.WithStack(err) -// } -// return nil -//} -// -//func (v *Validator) validatingCallMessage(limit int) ([]models.Message, error) { -// var list []models.Message -// err := v.db.Where("`to_chain_id`=? AND `type`=? AND `status`=?", v.config.ChainId, enums.MessageTypeCall, enums.MessageStatusValidating).Limit(limit).Find(&list).Error -// if err != nil { -// return nil, errors.WithStack(err) -// } -// return list, nil -//} diff --git a/applications/internal/utils/aa/aa.go b/applications/internal/utils/aa/aa.go index 45b972cb..10aebf9c 100644 --- a/applications/internal/utils/aa/aa.go +++ b/applications/internal/utils/aa/aa.go @@ -1,7 +1,7 @@ package aa import ( - "bsquared.network/b2-message-channel-applications/internal/utils/particle" + "bsquared.network/b2-message-sharing-applications/internal/utils/particle" "encoding/json" "fmt" "io/ioutil" diff --git a/applications/internal/utils/ethereum/event/message/call.go b/applications/internal/utils/ethereum/event/message/call.go index 4690d251..a8df7190 100644 --- a/applications/internal/utils/ethereum/event/message/call.go +++ b/applications/internal/utils/ethereum/event/message/call.go @@ -1,7 +1,7 @@ package message import ( - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/event" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event" "encoding/json" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" diff --git a/applications/internal/utils/ethereum/event/message/send.go b/applications/internal/utils/ethereum/event/message/send.go index f84bbb98..fab15803 100644 --- a/applications/internal/utils/ethereum/event/message/send.go +++ b/applications/internal/utils/ethereum/event/message/send.go @@ -1,7 +1,7 @@ package message import ( - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/event" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event" "encoding/json" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" diff --git a/applications/internal/utils/ethereum/message/message.go b/applications/internal/utils/ethereum/message/message.go index 7a058c4b..75f624ad 100644 --- a/applications/internal/utils/ethereum/message/message.go +++ b/applications/internal/utils/ethereum/message/message.go @@ -43,7 +43,7 @@ const LoginTypedData = `{ ] }, "domain": { - "name": "MessageChannelLogin", + "name": "MessageSharingLogin", "version": "1", "chainId": "%d" }, @@ -92,17 +92,17 @@ const MessageSendTypedData = `{ "type": "uint256" }, { - "name": "contract_address", + "name": "to_business_contract", "type": "address" }, { - "name": "data", + "name": "to_message", "type": "bytes" } ] }, "domain": { - "name": "B2MessageBridge", + "name": "B2MessageSharing", "version": "1", "chainId": "%d", "verifyingContract": "%s" @@ -113,8 +113,8 @@ const MessageSendTypedData = `{ "from_id": "%s", "from_sender": "%s", "to_chain_id": "%d", - "contract_address": "%s", - "data": "%s" + "to_business_contract": "%s", + "to_message": "%s" } }` diff --git a/applications/internal/utils/tx/tx.go b/applications/internal/utils/tx/tx.go index ec8bd1b4..801058b9 100644 --- a/applications/internal/utils/tx/tx.go +++ b/applications/internal/utils/tx/tx.go @@ -1,11 +1,11 @@ package tx import ( - "bsquared.network/b2-message-channel-applications/internal/config" - "bsquared.network/b2-message-channel-applications/internal/types" - "bsquared.network/b2-message-channel-applications/internal/utils/aa" - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/event" - "bsquared.network/b2-message-channel-applications/internal/utils/ethereum/message" + "bsquared.network/b2-message-sharing-applications/internal/config" + "bsquared.network/b2-message-sharing-applications/internal/types" + "bsquared.network/b2-message-sharing-applications/internal/utils/aa" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/event" + "bsquared.network/b2-message-sharing-applications/internal/utils/ethereum/message" "bytes" "context" "encoding/hex" diff --git a/applications/internal/vo/vo.go b/applications/internal/vo/vo.go index aba46434..1fad7681 100644 --- a/applications/internal/vo/vo.go +++ b/applications/internal/vo/vo.go @@ -1,7 +1,7 @@ package vo import ( - "bsquared.network/b2-message-channel-applications/internal/enums" + "bsquared.network/b2-message-sharing-applications/internal/enums" "github.com/btcsuite/btcd/rpcclient" "github.com/ethereum/go-ethereum/ethclient" ) diff --git a/contracts/.openzeppelin/unknown-1123.json b/contracts/.openzeppelin/unknown-1123.json deleted file mode 100644 index 710e5f52..00000000 --- a/contracts/.openzeppelin/unknown-1123.json +++ /dev/null @@ -1,1742 +0,0 @@ -{ - "manifestVersion": "3.2", - "proxies": [ - { - "address": "0x548B00A60316531cE781411a9108AA0B6300424A", - "txHash": "0xe54134a3616086458de7b90b0e306d2ad2e7a9988057a8649b97da66fddb2aa5", - "kind": "uups" - }, - { - "address": "0x67292d3b05C9fc8391372C23826236983C23b9a2", - "txHash": "0x3734fb860f3bfef256febffef3b2e02330ba01c698cbfb84248a2b99369859ef", - "kind": "uups" - }, - { - "address": "0x1c66cBEE6d4660459Fda5aa936e727398175E981", - "txHash": "0x29672f46a15768aebb631ed508d68e778a430694c16bace8ba37def9bf8c96f2", - "kind": "uups" - }, - { - "address": "0xB170Cc78337a5E08F48054eEE92405663e97E1Bc", - "txHash": "0x2bd7d212f08a85bb8378aea5c7b0b1860ed9b792fc1eae4ef87704580ee345fc", - "kind": "uups" - }, - { - "address": "0x91171cf194a4B66Bd459Ada038397c7e890FB9D4", - "txHash": "0xb3430193512655334a876b51a96c6bbec2c8be8c48bdabaa4d1b59d3f41878d5", - "kind": "uups" - }, - { - "address": "0xc7441Ac47596D1356fcc70062dA0462FcA98E14e", - "txHash": "0xec63c6ceb308bd775eca61cc14c25f2b02ba63c70bb3d08ad37d8287bdde268e", - "kind": "uups" - }, - { - "address": "0x5c2646996eEe3ECf865BEfA2De24e5BbE1C552Ba", - "txHash": "0xa4dfa5848c2f6a45f5d1cc047a59383f23007e179b57f9e840529cc96d21e583", - "kind": "uups" - }, - { - "address": "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5", - "txHash": "0xb09c927b54b9ec8fc5bf595769513549b1ca86be6028c50b91036580a13afdd4", - "kind": "uups" - }, - { - "address": "0x804641e29f5F63a037022f0eE90A493541cCb869", - "txHash": "0x5dc5904697864e1401f0975955dcb2f33aec1fcfa1832b4a05b72e93a500301c", - "kind": "uups" - } - ], - "impls": { - "06f4f53b8460c29712be3efa77392afe1cbb934e04c1116936fe78359be05436": { - "address": "0x683039b4539740ca8B7BCdA2dE786dbA11B6361d", - "txHash": "0x59f10ad35d201a729a79de4244a0f343bbdeb54cd20c7ecb6d34d25d06861596", - "layout": { - "solcVersion": "0.8.20", - "storage": [ - { - "label": "sequence", - "offset": 0, - "slot": "0", - "type": "t_uint256", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:18" - }, - { - "label": "weight", - "offset": 0, - "slot": "1", - "type": "t_uint256", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:22" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(AccessControlStorage)35_storage": { - "label": "struct AccessControlUpgradeable.AccessControlStorage", - "members": [ - { - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(EIP712Storage)376_storage": { - "label": "struct EIP712Upgradeable.EIP712Storage", - "members": [ - { - "label": "_hashedName", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "_hashedVersion", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - }, - { - "label": "_name", - "type": "t_string_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "_version", - "type": "t_string_storage", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(InitializableStorage)174_storage": { - "label": "struct Initializable.InitializableStorage", - "members": [ - { - "label": "_initialized", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "_initializing", - "type": "t_bool", - "offset": 8, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(RoleData)25_storage": { - "label": "struct AccessControlUpgradeable.RoleData", - "members": [ - { - "label": "hasRole", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "0" - }, - { - "label": "adminRole", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - }, - "namespaces": { - "erc7201:openzeppelin.storage.AccessControl": [ - { - "contract": "AccessControlUpgradeable", - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", - "offset": 0, - "slot": "0" - } - ], - "erc7201:openzeppelin.storage.EIP712": [ - { - "contract": "EIP712Upgradeable", - "label": "_hashedName", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", - "offset": 0, - "slot": "0" - }, - { - "contract": "EIP712Upgradeable", - "label": "_hashedVersion", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", - "offset": 0, - "slot": "1" - }, - { - "contract": "EIP712Upgradeable", - "label": "_name", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", - "offset": 0, - "slot": "2" - }, - { - "contract": "EIP712Upgradeable", - "label": "_version", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", - "offset": 0, - "slot": "3" - } - ], - "erc7201:openzeppelin.storage.Initializable": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_uint64", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", - "offset": 0, - "slot": "0" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", - "offset": 8, - "slot": "0" - } - ] - } - } - }, - "6fe216618d0b46997089d4447dd5d641be171f0b6109d8cf006116b0d30bbe0a": { - "address": "0xeA064CA4886b9BCBC3452D2859E87786ba4B3b11", - "txHash": "0x5a6f8331eedaccf16f30d23980530d91d9dacfad45481fc77b0d566b49ce2b8b", - "layout": { - "solcVersion": "0.8.20", - "storage": [], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(AccessControlStorage)35_storage": { - "label": "struct AccessControlUpgradeable.AccessControlStorage", - "members": [ - { - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(EIP712Storage)376_storage": { - "label": "struct EIP712Upgradeable.EIP712Storage", - "members": [ - { - "label": "_hashedName", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "_hashedVersion", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - }, - { - "label": "_name", - "type": "t_string_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "_version", - "type": "t_string_storage", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(InitializableStorage)174_storage": { - "label": "struct Initializable.InitializableStorage", - "members": [ - { - "label": "_initialized", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "_initializing", - "type": "t_bool", - "offset": 8, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(RoleData)25_storage": { - "label": "struct AccessControlUpgradeable.RoleData", - "members": [ - { - "label": "hasRole", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "0" - }, - { - "label": "adminRole", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - } - }, - "namespaces": { - "erc7201:openzeppelin.storage.AccessControl": [ - { - "contract": "AccessControlUpgradeable", - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", - "offset": 0, - "slot": "0" - } - ], - "erc7201:openzeppelin.storage.EIP712": [ - { - "contract": "EIP712Upgradeable", - "label": "_hashedName", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", - "offset": 0, - "slot": "0" - }, - { - "contract": "EIP712Upgradeable", - "label": "_hashedVersion", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", - "offset": 0, - "slot": "1" - }, - { - "contract": "EIP712Upgradeable", - "label": "_name", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", - "offset": 0, - "slot": "2" - }, - { - "contract": "EIP712Upgradeable", - "label": "_version", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", - "offset": 0, - "slot": "3" - } - ], - "erc7201:openzeppelin.storage.Initializable": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_uint64", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", - "offset": 0, - "slot": "0" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", - "offset": 8, - "slot": "0" - } - ] - } - } - }, - "fd6a3fcc07a72ce9a4d4b587b112ac686c02d216f964ce041e551f07ea1c386d": { - "address": "0x4dee1bF18D3a215385956E011b739349410dbF0B", - "txHash": "0x1bdb578f3a6d77b8700af651a20910bfbcfa6bd410f5d3869f044a238318d791", - "layout": { - "solcVersion": "0.8.20", - "storage": [ - { - "label": "sequence", - "offset": 0, - "slot": "0", - "type": "t_uint256", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:26" - }, - { - "label": "weight", - "offset": 0, - "slot": "1", - "type": "t_uint256", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:27" - }, - { - "label": "sequences", - "offset": 0, - "slot": "2", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:28" - }, - { - "label": "ids", - "offset": 0, - "slot": "3", - "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:29" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(AccessControlStorage)35_storage": { - "label": "struct AccessControlUpgradeable.AccessControlStorage", - "members": [ - { - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(EIP712Storage)376_storage": { - "label": "struct EIP712Upgradeable.EIP712Storage", - "members": [ - { - "label": "_hashedName", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "_hashedVersion", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - }, - { - "label": "_name", - "type": "t_string_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "_version", - "type": "t_string_storage", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(InitializableStorage)174_storage": { - "label": "struct Initializable.InitializableStorage", - "members": [ - { - "label": "_initialized", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "_initializing", - "type": "t_bool", - "offset": 8, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(RoleData)25_storage": { - "label": "struct AccessControlUpgradeable.RoleData", - "members": [ - { - "label": "hasRole", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "0" - }, - { - "label": "adminRole", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_mapping(t_uint256,t_bool)": { - "label": "mapping(uint256 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { - "label": "mapping(uint256 => mapping(uint256 => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - }, - "namespaces": { - "erc7201:openzeppelin.storage.AccessControl": [ - { - "contract": "AccessControlUpgradeable", - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", - "offset": 0, - "slot": "0" - } - ], - "erc7201:openzeppelin.storage.EIP712": [ - { - "contract": "EIP712Upgradeable", - "label": "_hashedName", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", - "offset": 0, - "slot": "0" - }, - { - "contract": "EIP712Upgradeable", - "label": "_hashedVersion", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", - "offset": 0, - "slot": "1" - }, - { - "contract": "EIP712Upgradeable", - "label": "_name", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", - "offset": 0, - "slot": "2" - }, - { - "contract": "EIP712Upgradeable", - "label": "_version", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", - "offset": 0, - "slot": "3" - } - ], - "erc7201:openzeppelin.storage.Initializable": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_uint64", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", - "offset": 0, - "slot": "0" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", - "offset": 8, - "slot": "0" - } - ] - } - } - }, - "226e38b1100d05b5fd6a3a136524b9ada5f9cb29e7694ba6267a0d254ea05f7b": { - "address": "0x79bd136DDE1EF960565f3dA29fA7a7BDc13973A3", - "txHash": "0xb273dfbc82da973e0e16b6790361e321353c765bbe1ab5f623d2f212788d4039", - "layout": { - "solcVersion": "0.8.20", - "storage": [ - { - "label": "sequence", - "offset": 0, - "slot": "0", - "type": "t_uint256", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:26" - }, - { - "label": "weight", - "offset": 0, - "slot": "1", - "type": "t_uint256", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:27" - }, - { - "label": "sequences", - "offset": 0, - "slot": "2", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:28" - }, - { - "label": "ids", - "offset": 0, - "slot": "3", - "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:29" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(AccessControlStorage)35_storage": { - "label": "struct AccessControlUpgradeable.AccessControlStorage", - "members": [ - { - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(EIP712Storage)376_storage": { - "label": "struct EIP712Upgradeable.EIP712Storage", - "members": [ - { - "label": "_hashedName", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "_hashedVersion", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - }, - { - "label": "_name", - "type": "t_string_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "_version", - "type": "t_string_storage", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(InitializableStorage)174_storage": { - "label": "struct Initializable.InitializableStorage", - "members": [ - { - "label": "_initialized", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "_initializing", - "type": "t_bool", - "offset": 8, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(RoleData)25_storage": { - "label": "struct AccessControlUpgradeable.RoleData", - "members": [ - { - "label": "hasRole", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "0" - }, - { - "label": "adminRole", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_mapping(t_uint256,t_bool)": { - "label": "mapping(uint256 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { - "label": "mapping(uint256 => mapping(uint256 => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - }, - "namespaces": { - "erc7201:openzeppelin.storage.AccessControl": [ - { - "contract": "AccessControlUpgradeable", - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", - "offset": 0, - "slot": "0" - } - ], - "erc7201:openzeppelin.storage.EIP712": [ - { - "contract": "EIP712Upgradeable", - "label": "_hashedName", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", - "offset": 0, - "slot": "0" - }, - { - "contract": "EIP712Upgradeable", - "label": "_hashedVersion", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", - "offset": 0, - "slot": "1" - }, - { - "contract": "EIP712Upgradeable", - "label": "_name", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", - "offset": 0, - "slot": "2" - }, - { - "contract": "EIP712Upgradeable", - "label": "_version", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", - "offset": 0, - "slot": "3" - } - ], - "erc7201:openzeppelin.storage.Initializable": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_uint64", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", - "offset": 0, - "slot": "0" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", - "offset": 8, - "slot": "0" - } - ] - } - } - }, - "761be4fd462127a5b98506e034b0a1d4d3274a6054936536bee56fb2465e26cb": { - "address": "0xd6abe748Fd22d8c18f815Ec3C082178C0168c1ba", - "txHash": "0xbbfc6315057a9556d8638545e4efe63d848fc390906808e46a76bb55d470db51", - "layout": { - "solcVersion": "0.8.20", - "storage": [ - { - "label": "sequence", - "offset": 0, - "slot": "0", - "type": "t_uint256", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:26" - }, - { - "label": "weight", - "offset": 0, - "slot": "1", - "type": "t_uint256", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:27" - }, - { - "label": "sequences", - "offset": 0, - "slot": "2", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:28" - }, - { - "label": "ids", - "offset": 0, - "slot": "3", - "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", - "contract": "B2MessageBridge", - "src": "contracts/message/B2MessageBridge.sol:29" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(AccessControlStorage)35_storage": { - "label": "struct AccessControlUpgradeable.AccessControlStorage", - "members": [ - { - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(EIP712Storage)376_storage": { - "label": "struct EIP712Upgradeable.EIP712Storage", - "members": [ - { - "label": "_hashedName", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "_hashedVersion", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - }, - { - "label": "_name", - "type": "t_string_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "_version", - "type": "t_string_storage", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(InitializableStorage)174_storage": { - "label": "struct Initializable.InitializableStorage", - "members": [ - { - "label": "_initialized", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "_initializing", - "type": "t_bool", - "offset": 8, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(RoleData)25_storage": { - "label": "struct AccessControlUpgradeable.RoleData", - "members": [ - { - "label": "hasRole", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "0" - }, - { - "label": "adminRole", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_mapping(t_uint256,t_bool)": { - "label": "mapping(uint256 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { - "label": "mapping(uint256 => mapping(uint256 => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - }, - "namespaces": { - "erc7201:openzeppelin.storage.AccessControl": [ - { - "contract": "AccessControlUpgradeable", - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", - "offset": 0, - "slot": "0" - } - ], - "erc7201:openzeppelin.storage.EIP712": [ - { - "contract": "EIP712Upgradeable", - "label": "_hashedName", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", - "offset": 0, - "slot": "0" - }, - { - "contract": "EIP712Upgradeable", - "label": "_hashedVersion", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", - "offset": 0, - "slot": "1" - }, - { - "contract": "EIP712Upgradeable", - "label": "_name", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", - "offset": 0, - "slot": "2" - }, - { - "contract": "EIP712Upgradeable", - "label": "_version", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", - "offset": 0, - "slot": "3" - } - ], - "erc7201:openzeppelin.storage.Initializable": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_uint64", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", - "offset": 0, - "slot": "0" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", - "offset": 8, - "slot": "0" - } - ] - } - } - }, - "c952f97e928082eda6fd0702583fb8f60d8369c190cf9fbf9e1aec981bb59cf8": { - "address": "0x616Bb469d4522D41298D2a1AC0a0A0701Bf8CFe7", - "txHash": "0x75209d4d8abd0aa7eae01615aa1d21d6e9d7bb01755a02c983bfda9c7aca54f3", - "layout": { - "solcVersion": "0.8.20", - "storage": [ - { - "label": "sequences", - "offset": 0, - "slot": "0", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "B2MessageBridge", - "src": "contracts/message/MessageBridge.sol:39" - }, - { - "label": "ids", - "offset": 0, - "slot": "1", - "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", - "contract": "B2MessageBridge", - "src": "contracts/message/MessageBridge.sol:40" - }, - { - "label": "weights", - "offset": 0, - "slot": "2", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "B2MessageBridge", - "src": "contracts/message/MessageBridge.sol:41" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(AccessControlStorage)35_storage": { - "label": "struct AccessControlUpgradeable.AccessControlStorage", - "members": [ - { - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(EIP712Storage)376_storage": { - "label": "struct EIP712Upgradeable.EIP712Storage", - "members": [ - { - "label": "_hashedName", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "_hashedVersion", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - }, - { - "label": "_name", - "type": "t_string_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "_version", - "type": "t_string_storage", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(InitializableStorage)174_storage": { - "label": "struct Initializable.InitializableStorage", - "members": [ - { - "label": "_initialized", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "_initializing", - "type": "t_bool", - "offset": 8, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(RoleData)25_storage": { - "label": "struct AccessControlUpgradeable.RoleData", - "members": [ - { - "label": "hasRole", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "0" - }, - { - "label": "adminRole", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_mapping(t_uint256,t_bool)": { - "label": "mapping(uint256 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { - "label": "mapping(uint256 => mapping(uint256 => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - }, - "namespaces": { - "erc7201:openzeppelin.storage.AccessControl": [ - { - "contract": "AccessControlUpgradeable", - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", - "offset": 0, - "slot": "0" - } - ], - "erc7201:openzeppelin.storage.EIP712": [ - { - "contract": "EIP712Upgradeable", - "label": "_hashedName", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", - "offset": 0, - "slot": "0" - }, - { - "contract": "EIP712Upgradeable", - "label": "_hashedVersion", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", - "offset": 0, - "slot": "1" - }, - { - "contract": "EIP712Upgradeable", - "label": "_name", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", - "offset": 0, - "slot": "2" - }, - { - "contract": "EIP712Upgradeable", - "label": "_version", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", - "offset": 0, - "slot": "3" - } - ], - "erc7201:openzeppelin.storage.Initializable": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_uint64", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", - "offset": 0, - "slot": "0" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", - "offset": 8, - "slot": "0" - } - ] - } - } - }, - "396285db24b331f7d99925ef8cb699199c338aa352bcc21caa1d22ba335f82df": { - "address": "0x979a1b1cECcc96162459ca9f6d8D0f450969171F", - "txHash": "0xe8abb806b640a355a7e58460690dddc2095aebc72a7a09444f94b84eb0e0c80b", - "layout": { - "solcVersion": "0.8.20", - "storage": [], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(AccessControlStorage)35_storage": { - "label": "struct AccessControlUpgradeable.AccessControlStorage", - "members": [ - { - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(EIP712Storage)376_storage": { - "label": "struct EIP712Upgradeable.EIP712Storage", - "members": [ - { - "label": "_hashedName", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "_hashedVersion", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - }, - { - "label": "_name", - "type": "t_string_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "_version", - "type": "t_string_storage", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(InitializableStorage)174_storage": { - "label": "struct Initializable.InitializableStorage", - "members": [ - { - "label": "_initialized", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "_initializing", - "type": "t_bool", - "offset": 8, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(RoleData)25_storage": { - "label": "struct AccessControlUpgradeable.RoleData", - "members": [ - { - "label": "hasRole", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "0" - }, - { - "label": "adminRole", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - } - }, - "namespaces": { - "erc7201:openzeppelin.storage.AccessControl": [ - { - "contract": "AccessControlUpgradeable", - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", - "offset": 0, - "slot": "0" - } - ], - "erc7201:openzeppelin.storage.EIP712": [ - { - "contract": "EIP712Upgradeable", - "label": "_hashedName", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", - "offset": 0, - "slot": "0" - }, - { - "contract": "EIP712Upgradeable", - "label": "_hashedVersion", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", - "offset": 0, - "slot": "1" - }, - { - "contract": "EIP712Upgradeable", - "label": "_name", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", - "offset": 0, - "slot": "2" - }, - { - "contract": "EIP712Upgradeable", - "label": "_version", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", - "offset": 0, - "slot": "3" - } - ], - "erc7201:openzeppelin.storage.Initializable": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_uint64", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", - "offset": 0, - "slot": "0" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", - "offset": 8, - "slot": "0" - } - ] - } - } - }, - "4e116ba6d8885ebd4eb73a4966122ef1787d4caab12e0acadb0439ea55351611": { - "address": "0x8B68d63a60d76793896C8c5c43796EDf323594C2", - "txHash": "0x33865f24715699020b0791934ad1de07733859fe162abadc04fca24b5ecf09ac", - "layout": { - "solcVersion": "0.8.20", - "storage": [ - { - "label": "sequences", - "offset": 0, - "slot": "0", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "B2MessageBridge", - "src": "contracts/message/MessageBridge.sol:39" - }, - { - "label": "ids", - "offset": 0, - "slot": "1", - "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", - "contract": "B2MessageBridge", - "src": "contracts/message/MessageBridge.sol:40" - }, - { - "label": "weights", - "offset": 0, - "slot": "2", - "type": "t_mapping(t_uint256,t_uint256)", - "contract": "B2MessageBridge", - "src": "contracts/message/MessageBridge.sol:41" - } - ], - "types": { - "t_address": { - "label": "address", - "numberOfBytes": "20" - }, - "t_bool": { - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_mapping(t_address,t_bool)": { - "label": "mapping(address => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { - "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", - "numberOfBytes": "32" - }, - "t_string_storage": { - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(AccessControlStorage)35_storage": { - "label": "struct AccessControlUpgradeable.AccessControlStorage", - "members": [ - { - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "offset": 0, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(EIP712Storage)376_storage": { - "label": "struct EIP712Upgradeable.EIP712Storage", - "members": [ - { - "label": "_hashedName", - "type": "t_bytes32", - "offset": 0, - "slot": "0" - }, - { - "label": "_hashedVersion", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - }, - { - "label": "_name", - "type": "t_string_storage", - "offset": 0, - "slot": "2" - }, - { - "label": "_version", - "type": "t_string_storage", - "offset": 0, - "slot": "3" - } - ], - "numberOfBytes": "128" - }, - "t_struct(InitializableStorage)174_storage": { - "label": "struct Initializable.InitializableStorage", - "members": [ - { - "label": "_initialized", - "type": "t_uint64", - "offset": 0, - "slot": "0" - }, - { - "label": "_initializing", - "type": "t_bool", - "offset": 8, - "slot": "0" - } - ], - "numberOfBytes": "32" - }, - "t_struct(RoleData)25_storage": { - "label": "struct AccessControlUpgradeable.RoleData", - "members": [ - { - "label": "hasRole", - "type": "t_mapping(t_address,t_bool)", - "offset": 0, - "slot": "0" - }, - { - "label": "adminRole", - "type": "t_bytes32", - "offset": 0, - "slot": "1" - } - ], - "numberOfBytes": "64" - }, - "t_uint64": { - "label": "uint64", - "numberOfBytes": "8" - }, - "t_mapping(t_uint256,t_bool)": { - "label": "mapping(uint256 => bool)", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { - "label": "mapping(uint256 => mapping(uint256 => bool))", - "numberOfBytes": "32" - }, - "t_mapping(t_uint256,t_uint256)": { - "label": "mapping(uint256 => uint256)", - "numberOfBytes": "32" - }, - "t_uint256": { - "label": "uint256", - "numberOfBytes": "32" - } - }, - "namespaces": { - "erc7201:openzeppelin.storage.AccessControl": [ - { - "contract": "AccessControlUpgradeable", - "label": "_roles", - "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", - "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", - "offset": 0, - "slot": "0" - } - ], - "erc7201:openzeppelin.storage.EIP712": [ - { - "contract": "EIP712Upgradeable", - "label": "_hashedName", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", - "offset": 0, - "slot": "0" - }, - { - "contract": "EIP712Upgradeable", - "label": "_hashedVersion", - "type": "t_bytes32", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", - "offset": 0, - "slot": "1" - }, - { - "contract": "EIP712Upgradeable", - "label": "_name", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", - "offset": 0, - "slot": "2" - }, - { - "contract": "EIP712Upgradeable", - "label": "_version", - "type": "t_string_storage", - "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", - "offset": 0, - "slot": "3" - } - ], - "erc7201:openzeppelin.storage.Initializable": [ - { - "contract": "Initializable", - "label": "_initialized", - "type": "t_uint64", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", - "offset": 0, - "slot": "0" - }, - { - "contract": "Initializable", - "label": "_initializing", - "type": "t_bool", - "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", - "offset": 8, - "slot": "0" - } - ] - } - } - } - } -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json deleted file mode 100644 index 5fd6d3dd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json deleted file mode 100644 index c27b89da..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +++ /dev/null @@ -1,259 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AccessControlUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", - "abi": [ - { - "inputs": [], - "name": "AccessControlBadConfirmation", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "neededRole", - "type": "bytes32" - } - ], - "name": "AccessControlUnauthorizedAccount", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidInitialization", - "type": "error" - }, - { - "inputs": [], - "name": "NotInitializing", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "version", - "type": "uint64" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "callerConfirmation", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json deleted file mode 100644 index 326daa7a..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Initializable", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "abi": [ - { - "inputs": [], - "name": "InvalidInitialization", - "type": "error" - }, - { - "inputs": [], - "name": "NotInitializing", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "version", - "type": "uint64" - } - ], - "name": "Initialized", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json deleted file mode 100644 index 4a4e1d75..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "UUPSUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "AddressEmptyCode", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "ERC1967InvalidImplementation", - "type": "error" - }, - { - "inputs": [], - "name": "ERC1967NonPayable", - "type": "error" - }, - { - "inputs": [], - "name": "FailedInnerCall", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidInitialization", - "type": "error" - }, - { - "inputs": [], - "name": "NotInitializing", - "type": "error" - }, - { - "inputs": [], - "name": "UUPSUnauthorizedCallContext", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "slot", - "type": "bytes32" - } - ], - "name": "UUPSUnsupportedProxiableUUID", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "version", - "type": "uint64" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "UPGRADE_INTERFACE_VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json deleted file mode 100644 index 5fd6d3dd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json deleted file mode 100644 index e8890a5c..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ContextUpgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "abi": [ - { - "inputs": [], - "name": "InvalidInitialization", - "type": "error" - }, - { - "inputs": [], - "name": "NotInitializing", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "version", - "type": "uint64" - } - ], - "name": "Initialized", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol/EIP712Upgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol/EIP712Upgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol/EIP712Upgradeable.json deleted file mode 100644 index 74349ff5..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol/EIP712Upgradeable.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "EIP712Upgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", - "abi": [ - { - "inputs": [], - "name": "InvalidInitialization", - "type": "error" - }, - { - "inputs": [], - "name": "NotInitializing", - "type": "error" - }, - { - "anonymous": false, - "inputs": [], - "name": "EIP712DomainChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "version", - "type": "uint64" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [], - "name": "eip712Domain", - "outputs": [ - { - "internalType": "bytes1", - "name": "fields", - "type": "bytes1" - }, - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "version", - "type": "string" - }, - { - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "verifyingContract", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256[]", - "name": "extensions", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json b/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json deleted file mode 100644 index 3546eae4..00000000 --- a/contracts/artifacts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC165Upgradeable", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", - "abi": [ - { - "inputs": [], - "name": "InvalidInitialization", - "type": "error" - }, - { - "inputs": [], - "name": "NotInitializing", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "version", - "type": "uint64" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json b/contracts/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json deleted file mode 100644 index 5fd6d3dd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json b/contracts/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json deleted file mode 100644 index cdd4cba9..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +++ /dev/null @@ -1,204 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IAccessControl", - "sourceName": "@openzeppelin/contracts/access/IAccessControl.sol", - "abi": [ - { - "inputs": [], - "name": "AccessControlBadConfirmation", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "neededRole", - "type": "bytes32" - } - ], - "name": "AccessControlUnauthorizedAccount", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "callerConfirmation", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC5267.sol/IERC5267.dbg.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC5267.sol/IERC5267.dbg.json deleted file mode 100644 index 5fd6d3dd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC5267.sol/IERC5267.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC5267.sol/IERC5267.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC5267.sol/IERC5267.json deleted file mode 100644 index 17aa1cd6..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC5267.sol/IERC5267.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC5267", - "sourceName": "@openzeppelin/contracts/interfaces/IERC5267.sol", - "abi": [ - { - "anonymous": false, - "inputs": [], - "name": "EIP712DomainChanged", - "type": "event" - }, - { - "inputs": [], - "name": "eip712Domain", - "outputs": [ - { - "internalType": "bytes1", - "name": "fields", - "type": "bytes1" - }, - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "version", - "type": "string" - }, - { - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "verifyingContract", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256[]", - "name": "extensions", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json deleted file mode 100644 index 5fd6d3dd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json deleted file mode 100644 index e9576bf3..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC1822Proxiable", - "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "abi": [ - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.json b/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.json deleted file mode 100644 index 6971b849..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol/ERC1967Utils.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ERC1967Utils", - "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "admin", - "type": "address" - } - ], - "name": "ERC1967InvalidAdmin", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "ERC1967InvalidBeacon", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "ERC1967InvalidImplementation", - "type": "error" - }, - { - "inputs": [], - "name": "ERC1967NonPayable", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - ], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fb3f28c1d9a5e0b4976c1f7c4a4ce18ce467171e5a5966bcc771239da9fa58864736f6c63430008140033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fb3f28c1d9a5e0b4976c1f7c4a4ce18ce467171e5a5966bcc771239da9fa58864736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json b/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json b/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json deleted file mode 100644 index 9ff0f137..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IBeacon", - "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "abi": [ - { - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json deleted file mode 100644 index 5fd6d3dd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json deleted file mode 100644 index b0d79e9c..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Address", - "sourceName": "@openzeppelin/contracts/utils/Address.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "AddressEmptyCode", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "AddressInsufficientBalance", - "type": "error" - }, - { - "inputs": [], - "name": "FailedInnerCall", - "type": "error" - } - ], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2116c26642d99b6660542ad25041b3381980959e7b44f2e036b7fe738bc77ee64736f6c63430008140033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2116c26642d99b6660542ad25041b3381980959e7b44f2e036b7fe738bc77ee64736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json deleted file mode 100644 index 5fd6d3dd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json b/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json deleted file mode 100644 index 677bc998..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "StorageSlot", - "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", - "abi": [], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059fa9fe938fefef1bd0eb076859bb74dbab034420677a2ae82078da6df2e86f464736f6c63430008140033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059fa9fe938fefef1bd0eb076859bb74dbab034420677a2ae82078da6df2e86f464736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json deleted file mode 100644 index 5fd6d3dd..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json deleted file mode 100644 index 760820e7..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Strings", - "sourceName": "@openzeppelin/contracts/utils/Strings.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "length", - "type": "uint256" - } - ], - "name": "StringsInsufficientHexLength", - "type": "error" - } - ], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d70f15be75af79ae10cdfad86ba6045493973d2d6779ed4d31615b58387c022164736f6c63430008140033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d70f15be75af79ae10cdfad86ba6045493973d2d6779ed4d31615b58387c022164736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json b/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json deleted file mode 100644 index 6034ff46..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/ECDSA.sol/ECDSA.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ECDSA", - "sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", - "abi": [ - { - "inputs": [], - "name": "ECDSAInvalidSignature", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "length", - "type": "uint256" - } - ], - "name": "ECDSAInvalidSignatureLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "ECDSAInvalidSignatureS", - "type": "error" - } - ], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201b16271420b970ada55d7a644f7be65b48e3af35562fa8dfaffeb7e1eee0ddb364736f6c63430008140033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201b16271420b970ada55d7a644f7be65b48e3af35562fa8dfaffeb7e1eee0ddb364736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.json b/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.json deleted file mode 100644 index 15e761f9..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol/MessageHashUtils.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "MessageHashUtils", - "sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol", - "abi": [], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e646b204a217f98e3ebddc7a4376e69f44216c583dc162ce889d8c14c2a6913664736f6c63430008140033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e646b204a217f98e3ebddc7a4376e69f44216c583dc162ce889d8c14c2a6913664736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json b/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json deleted file mode 100644 index ff87f91e..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC165", - "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json deleted file mode 100644 index 840ac379..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Math", - "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", - "abi": [ - { - "inputs": [], - "name": "MathOverflowedMulDiv", - "type": "error" - } - ], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b68383f9d48a41264ff8ca2c2eb9bf77a9f2883294fa8b82c7719b48d40b0f864736f6c63430008140033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b68383f9d48a41264ff8ca2c2eb9bf77a9f2883294fa8b82c7719b48d40b0f864736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json deleted file mode 100644 index 9a8d5126..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json" -} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json deleted file mode 100644 index 0b05728e..00000000 --- a/contracts/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SignedMath", - "sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol", - "abi": [], - "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c07cb824bf56ed2e2e56bc80d8c7ae11334f1229542a9fb2b54655d41fd07ac64736f6c63430008140033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c07cb824bf56ed2e2e56bc80d8c7ae11334f1229542a9fb2b54655d41fd07ac64736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/build-info/abe90607c0f29f9069da9533b2d74eec.json b/contracts/artifacts/build-info/abe90607c0f29f9069da9533b2d74eec.json deleted file mode 100644 index 0f2815a5..00000000 --- a/contracts/artifacts/build-info/abe90607c0f29f9069da9533b2d74eec.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"abe90607c0f29f9069da9533b2d74eec","_format":"hh-sol-build-info-1","solcVersion":"0.8.20","solcLongVersion":"0.8.20+commit.a1b79de6","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n struct AccessControlStorage {\n mapping(bytes32 role => RoleData) _roles;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n assembly {\n $.slot := AccessControlStorageLocation\n }\n }\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n function __AccessControl_init() internal onlyInitializing {\n }\n\n function __AccessControl_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n AccessControlStorage storage $ = _getAccessControlStorage();\n bytes32 previousAdminRole = getRoleAdmin(role);\n $._roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (!hasRole(role, account)) {\n $._roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (hasRole(role, account)) {\n $._roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reininitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n assembly {\n $.slot := INITIALIZABLE_STORAGE\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address private immutable __self = address(this);\n\n /**\n * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n * during an upgrade.\n */\n string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n /**\n * @dev The call is from an unauthorized context.\n */\n error UUPSUnauthorizedCallContext();\n\n /**\n * @dev The storage `slot` is unsupported as a UUID.\n */\n error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n _checkProxy();\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n _checkNotDelegated();\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n return ERC1967Utils.IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data);\n }\n\n /**\n * @dev Reverts if the execution is not performed via delegatecall or the execution\n * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n * See {_onlyProxy}.\n */\n function _checkProxy() internal view virtual {\n if (\n address(this) == __self || // Must be called through delegatecall\n ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n ) {\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Reverts if the execution is performed via delegatecall.\n * See {notDelegated}.\n */\n function _checkNotDelegated() internal view virtual {\n if (address(this) != __self) {\n // Must not be called through delegatecall\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n *\n * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n * is expected to be the implementation slot in ERC1967.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n revert UUPSUnsupportedProxiableUUID(slot);\n }\n ERC1967Utils.upgradeToAndCall(newImplementation, data);\n } catch {\n // The implementation is not UUPS\n revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @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 *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.20;\n\nimport {MessageHashUtils} from \"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\";\nimport {IERC5267} from \"@openzeppelin/contracts/interfaces/IERC5267.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n */\nabstract contract EIP712Upgradeable is Initializable, IERC5267 {\n bytes32 private constant TYPE_HASH =\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n /// @custom:storage-location erc7201:openzeppelin.storage.EIP712\n struct EIP712Storage {\n /// @custom:oz-renamed-from _HASHED_NAME\n bytes32 _hashedName;\n /// @custom:oz-renamed-from _HASHED_VERSION\n bytes32 _hashedVersion;\n\n string _name;\n string _version;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.EIP712\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant EIP712StorageLocation = 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100;\n\n function _getEIP712Storage() private pure returns (EIP712Storage storage $) {\n assembly {\n $.slot := EIP712StorageLocation\n }\n }\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\n __EIP712_init_unchained(name, version);\n }\n\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\n EIP712Storage storage $ = _getEIP712Storage();\n $._name = name;\n $._version = version;\n\n // Reset prior values in storage if upgrading\n $._hashedName = 0;\n $._hashedVersion = 0;\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n return _buildDomainSeparator();\n }\n\n function _buildDomainSeparator() private view returns (bytes32) {\n return keccak256(abi.encode(TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash(), block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n\n /**\n * @dev See {IERC-5267}.\n */\n function eip712Domain()\n public\n view\n virtual\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n )\n {\n EIP712Storage storage $ = _getEIP712Storage();\n // If the hashed name and version in storage are non-zero, the contract hasn't been properly initialized\n // and the EIP712 domain is not reliable, as it will be missing name and version.\n require($._hashedName == 0 && $._hashedVersion == 0, \"EIP712: Uninitialized\");\n\n return (\n hex\"0f\", // 01111\n _EIP712Name(),\n _EIP712Version(),\n block.chainid,\n address(this),\n bytes32(0),\n new uint256[](0)\n );\n }\n\n /**\n * @dev The name parameter for the EIP712 domain.\n *\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n * are a concern.\n */\n function _EIP712Name() internal view virtual returns (string memory) {\n EIP712Storage storage $ = _getEIP712Storage();\n return $._name;\n }\n\n /**\n * @dev The version parameter for the EIP712 domain.\n *\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n * are a concern.\n */\n function _EIP712Version() internal view virtual returns (string memory) {\n EIP712Storage storage $ = _getEIP712Storage();\n return $._version;\n }\n\n /**\n * @dev The hash of the name parameter for the EIP712 domain.\n *\n * NOTE: In previous versions this function was virtual. In this version you should override `_EIP712Name` instead.\n */\n function _EIP712NameHash() internal view returns (bytes32) {\n EIP712Storage storage $ = _getEIP712Storage();\n string memory name = _EIP712Name();\n if (bytes(name).length > 0) {\n return keccak256(bytes(name));\n } else {\n // If the name is empty, the contract may have been upgraded without initializing the new storage.\n // We return the name hash in storage if non-zero, otherwise we assume the name is empty by design.\n bytes32 hashedName = $._hashedName;\n if (hashedName != 0) {\n return hashedName;\n } else {\n return keccak256(\"\");\n }\n }\n }\n\n /**\n * @dev The hash of the version parameter for the EIP712 domain.\n *\n * NOTE: In previous versions this function was virtual. In this version you should override `_EIP712Version` instead.\n */\n function _EIP712VersionHash() internal view returns (bytes32) {\n EIP712Storage storage $ = _getEIP712Storage();\n string memory version = _EIP712Version();\n if (bytes(version).length > 0) {\n return keccak256(bytes(version));\n } else {\n // If the version is empty, the contract may have been upgraded without initializing the new storage.\n // We return the version hash in storage if non-zero, otherwise we assume the version is empty by design.\n bytes32 hashedVersion = $._hashedVersion;\n if (hashedVersion != 0) {\n return hashedVersion;\n } else {\n return keccak256(\"\");\n }\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\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 *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)\n\npragma solidity ^0.8.20;\n\ninterface IERC5267 {\n /**\n * @dev MAY be emitted to signal that the domain could have changed.\n */\n event EIP712DomainChanged();\n\n /**\n * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n * signature.\n */\n function eip712Domain()\n external\n view\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n );\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n */\nlibrary ERC1967Utils {\n // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\n // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error AddressInsufficientBalance(address account);\n\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedInnerCall();\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert AddressInsufficientBalance(address(this));\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert FailedInnerCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {FailedInnerCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert AddressInsufficientBalance(address(this));\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n * unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {FailedInnerCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert FailedInnerCall();\n }\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MessageHashUtils.sol)\n\npragma solidity ^0.8.20;\n\nimport {Strings} from \"../Strings.sol\";\n\n/**\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n *\n * The library provides methods for generating a hash of a message that conforms to the\n * https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n * specifications.\n */\nlibrary MessageHashUtils {\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing a bytes32 `messageHash` with\n * `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n * keccak256, although any bytes32 value can be safely used because the final digest will\n * be re-hashed.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\") // 32 is the bytes-length of messageHash\n mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\n digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\n }\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing an arbitrary `message` with\n * `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\n return\n keccak256(bytes.concat(\"\\x19Ethereum Signed Message:\\n\", bytes(Strings.toString(message.length)), message));\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x00` (data with intended validator).\n *\n * The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n * `validator` address. Then hashing the result.\n *\n * See {ECDSA-recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(hex\"19_00\", validator, data));\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\n *\n * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n * `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n *\n * See {ECDSA-recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, hex\"19_01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n digest := keccak256(ptr, 0x42)\n }\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @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 *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n /**\n * @dev Muldiv operation overflow.\n */\n error MathOverflowedMulDiv();\n\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n return a / b;\n }\n\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @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.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0 = x * y; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n if (denominator <= prod1) {\n revert MathOverflowedMulDiv();\n }\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n uint8 private constant ADDRESS_LENGTH = 20;\n\n /**\n * @dev The `value` string doesn't fit in the specified `length`.\n */\n error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toStringSigned(int256 value) internal pure returns (string memory) {\n return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n uint256 localValue = value;\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = HEX_DIGITS[localValue & 0xf];\n localValue >>= 4;\n }\n if (localValue != 0) {\n revert StringsInsufficientHexLength(value, length);\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n * representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"contracts/business/BusinessContractExample.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\";\n\ninterface IBusinessContract {\n function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success);\n}\n\ncontract BusinessContractExample is IBusinessContract, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable {\n\n bytes32 public constant ADMIN_ROLE = keccak256(\"admin_role\");\n bytes32 public constant UPGRADE_ROLE = keccak256(\"upgrade_role\");\n bytes32 public constant SENDER_ROLE = keccak256(\"sender_role\");\n\n function initialize() public initializer {\n __AccessControl_init();\n __UUPSUpgradeable_init();\n _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _grantRole(ADMIN_ROLE, msg.sender);\n _grantRole(UPGRADE_ROLE, msg.sender);\n }\n\n function _authorizeUpgrade(address newImplementation)\n internal\n onlyRole(UPGRADE_ROLE)\n override\n {\n\n }\n\n event Send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes data);\n\n function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external onlyRole(SENDER_ROLE) override returns (bool success) {\n // TODO 1. Verify the validity of from_chain_id and from_sender\n // TODO 2. Verify that from_id has been executed\n // TODO 3. Parse data and execute service logic\n emit Send(from_chain_id, from_id, from_sender, data);\n return true;\n }\n\n}"}},"settings":{"optimizer":{"enabled":true,"runs":1000},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","exportedSymbols":{"AccessControlUpgradeable":[362],"ContextUpgradeable":[844],"ERC165Upgradeable":[1228],"IAccessControl":[1311],"Initializable":[616]},"id":363,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:0"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":1312,"src":"134:81:0","symbolAliases":[{"foreign":{"id":2,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"142:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":845,"src":"216:67:0","symbolAliases":[{"foreign":{"id":4,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":844,"src":"224:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"../utils/introspection/ERC165Upgradeable.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":1229,"src":"284:79:0","symbolAliases":[{"foreign":{"id":6,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"292:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":617,"src":"364:63:0","symbolAliases":[{"foreign":{"id":8,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"372:13:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":11,"name":"Initializable","nameLocations":["2136:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"2136:13:0"},"id":12,"nodeType":"InheritanceSpecifier","src":"2136:13:0"},{"baseName":{"id":13,"name":"ContextUpgradeable","nameLocations":["2151:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":844,"src":"2151:18:0"},"id":14,"nodeType":"InheritanceSpecifier","src":"2151:18:0"},{"baseName":{"id":15,"name":"IAccessControl","nameLocations":["2171:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":1311,"src":"2171:14:0"},"id":16,"nodeType":"InheritanceSpecifier","src":"2171:14:0"},{"baseName":{"id":17,"name":"ERC165Upgradeable","nameLocations":["2187:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":1228,"src":"2187:17:0"},"id":18,"nodeType":"InheritanceSpecifier","src":"2187:17:0"}],"canonicalName":"AccessControlUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"429:1660:0","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role."},"fullyImplemented":true,"id":362,"linearizedBaseContracts":[362,1228,2363,1311,844,616],"name":"AccessControlUpgradeable","nameLocation":"2108:24:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControlUpgradeable.RoleData","id":25,"members":[{"constant":false,"id":22,"mutability":"mutable","name":"hasRole","nameLocation":"2270:7:0","nodeType":"VariableDeclaration","scope":25,"src":"2237:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":21,"keyName":"account","keyNameLocation":"2253:7:0","keyType":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"2245:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2237:32:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":20,"name":"bool","nodeType":"ElementaryTypeName","src":"2264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"adminRole","nameLocation":"2295:9:0","nodeType":"VariableDeclaration","scope":25,"src":"2287:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2218:8:0","nodeType":"StructDefinition","scope":362,"src":"2211:100:0","visibility":"public"},{"constant":true,"functionSelector":"a217fddf","id":28,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2341:18:0","nodeType":"VariableDeclaration","scope":362,"src":"2317:49:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":27,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2362:4:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"canonicalName":"AccessControlUpgradeable.AccessControlStorage","documentation":{"id":29,"nodeType":"StructuredDocumentation","src":"2374:71:0","text":"@custom:storage-location erc7201:openzeppelin.storage.AccessControl"},"id":35,"members":[{"constant":false,"id":34,"mutability":"mutable","name":"_roles","nameLocation":"2522:6:0","nodeType":"VariableDeclaration","scope":35,"src":"2488:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"typeName":{"id":33,"keyName":"role","keyNameLocation":"2504:4:0","keyType":{"id":30,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2496:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2488:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":32,"nodeType":"UserDefinedTypeName","pathNode":{"id":31,"name":"RoleData","nameLocations":["2512:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":25,"src":"2512:8:0"},"referencedDeclaration":25,"src":"2512:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage_ptr","typeString":"struct AccessControlUpgradeable.RoleData"}}},"visibility":"internal"}],"name":"AccessControlStorage","nameLocation":"2457:20:0","nodeType":"StructDefinition","scope":362,"src":"2450:85:0","visibility":"public"},{"constant":true,"id":38,"mutability":"constant","name":"AccessControlStorageLocation","nameLocation":"2683:28:0","nodeType":"VariableDeclaration","scope":362,"src":"2658:122:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":36,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2658:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030","id":37,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:66:0","typeDescriptions":{"typeIdentifier":"t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1","typeString":"int_const 1295...(68 digits omitted)...1824"},"value":"0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800"},"visibility":"private"},{"body":{"id":45,"nodeType":"Block","src":"2877:87:0","statements":[{"AST":{"nodeType":"YulBlock","src":"2896:62:0","statements":[{"nodeType":"YulAssignment","src":"2910:38:0","value":{"name":"AccessControlStorageLocation","nodeType":"YulIdentifier","src":"2920:28:0"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"2910:6:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":42,"isOffset":false,"isSlot":true,"src":"2910:6:0","suffix":"slot","valueSize":1},{"declaration":38,"isOffset":false,"isSlot":false,"src":"2920:28:0","valueSize":1}],"id":44,"nodeType":"InlineAssembly","src":"2887:71:0"}]},"id":46,"implemented":true,"kind":"function","modifiers":[],"name":"_getAccessControlStorage","nameLocation":"2796:24:0","nodeType":"FunctionDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"2820:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42,"mutability":"mutable","name":"$","nameLocation":"2874:1:0","nodeType":"VariableDeclaration","scope":46,"src":"2845:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":41,"nodeType":"UserDefinedTypeName","pathNode":{"id":40,"name":"AccessControlStorage","nameLocations":["2845:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"2845:20:0"},"referencedDeclaration":35,"src":"2845:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"src":"2844:32:0"},"scope":362,"src":"2787:177:0","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":56,"nodeType":"Block","src":"3181:44:0","statements":[{"expression":{"arguments":[{"id":52,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"3202:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":51,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[129,150],"referencedDeclaration":129,"src":"3191:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":53,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3191:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54,"nodeType":"ExpressionStatement","src":"3191:16:0"},{"id":55,"nodeType":"PlaceholderStatement","src":"3217:1:0"}]},"documentation":{"id":47,"nodeType":"StructuredDocumentation","src":"2970:174:0","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":57,"name":"onlyRole","nameLocation":"3158:8:0","nodeType":"ModifierDefinition","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"role","nameLocation":"3175:4:0","nodeType":"VariableDeclaration","scope":57,"src":"3167:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":48,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3167:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3166:14:0"},"src":"3149:76:0","virtual":false,"visibility":"internal"},{"body":{"id":62,"nodeType":"Block","src":"3289:7:0","statements":[]},"id":63,"implemented":true,"kind":"function","modifiers":[{"id":60,"kind":"modifierInvocation","modifierName":{"id":59,"name":"onlyInitializing","nameLocations":["3272:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3272:16:0"},"nodeType":"ModifierInvocation","src":"3272:16:0"}],"name":"__AccessControl_init","nameLocation":"3240:20:0","nodeType":"FunctionDefinition","parameters":{"id":58,"nodeType":"ParameterList","parameters":[],"src":"3260:2:0"},"returnParameters":{"id":61,"nodeType":"ParameterList","parameters":[],"src":"3289:0:0"},"scope":362,"src":"3231:65:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":68,"nodeType":"Block","src":"3370:7:0","statements":[]},"id":69,"implemented":true,"kind":"function","modifiers":[{"id":66,"kind":"modifierInvocation","modifierName":{"id":65,"name":"onlyInitializing","nameLocations":["3353:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3353:16:0"},"nodeType":"ModifierInvocation","src":"3353:16:0"}],"name":"__AccessControl_init_unchained","nameLocation":"3311:30:0","nodeType":"FunctionDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[],"src":"3341:2:0"},"returnParameters":{"id":67,"nodeType":"ParameterList","parameters":[],"src":"3370:0:0"},"scope":362,"src":"3302:75:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1227],"body":{"id":90,"nodeType":"Block","src":"3534:111:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3551:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":80,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"3571:14:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1311_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1311_$","typeString":"type(contract IAccessControl)"}],"id":79,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3566:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3566:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$1311","typeString":"type(contract IAccessControl)"}},"id":82,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3587:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"3566:32:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3551:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":86,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3626:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":84,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3602:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlUpgradeable_$362_$","typeString":"type(contract super AccessControlUpgradeable)"}},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3608:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1227,"src":"3602:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3602:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3551:87:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":77,"id":89,"nodeType":"Return","src":"3544:94:0"}]},"documentation":{"id":70,"nodeType":"StructuredDocumentation","src":"3382:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":91,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3452:17:0","nodeType":"FunctionDefinition","overrides":{"id":74,"nodeType":"OverrideSpecifier","overrides":[],"src":"3510:8:0"},"parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72,"mutability":"mutable","name":"interfaceId","nameLocation":"3477:11:0","nodeType":"VariableDeclaration","scope":91,"src":"3470:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":71,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3470:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3469:20:0"},"returnParameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":91,"src":"3528:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75,"name":"bool","nodeType":"ElementaryTypeName","src":"3528:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3527:6:0"},"scope":362,"src":"3443:202:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1278],"body":{"id":115,"nodeType":"Block","src":"3815:124:0","statements":[{"assignments":[103],"declarations":[{"constant":false,"id":103,"mutability":"mutable","name":"$","nameLocation":"3854:1:0","nodeType":"VariableDeclaration","scope":115,"src":"3825:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":102,"nodeType":"UserDefinedTypeName","pathNode":{"id":101,"name":"AccessControlStorage","nameLocations":["3825:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"3825:20:0"},"referencedDeclaration":35,"src":"3825:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":106,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"3858:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3858:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3825:59:0"},{"expression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":107,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"3901:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3903:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"3901:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":110,"indexExpression":{"id":109,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"3910:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3916:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"3901:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":113,"indexExpression":{"id":112,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3924:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":100,"id":114,"nodeType":"Return","src":"3894:38:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"3651:76:0","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":116,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"3741:7:0","nodeType":"FunctionDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"role","nameLocation":"3757:4:0","nodeType":"VariableDeclaration","scope":116,"src":"3749:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":93,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3749:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":96,"mutability":"mutable","name":"account","nameLocation":"3771:7:0","nodeType":"VariableDeclaration","scope":116,"src":"3763:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":95,"name":"address","nodeType":"ElementaryTypeName","src":"3763:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3748:31:0"},"returnParameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":116,"src":"3809:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":98,"name":"bool","nodeType":"ElementaryTypeName","src":"3809:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3808:6:0"},"scope":362,"src":"3732:207:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":128,"nodeType":"Block","src":"4204:47:0","statements":[{"expression":{"arguments":[{"id":123,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119,"src":"4225:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":124,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"4231:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4231:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":122,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[129,150],"referencedDeclaration":150,"src":"4214:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":127,"nodeType":"ExpressionStatement","src":"4214:30:0"}]},"documentation":{"id":117,"nodeType":"StructuredDocumentation","src":"3945:198:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":129,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4157:10:0","nodeType":"FunctionDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119,"mutability":"mutable","name":"role","nameLocation":"4176:4:0","nodeType":"VariableDeclaration","scope":129,"src":"4168:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":118,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4168:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4167:14:0"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[],"src":"4204:0:0"},"scope":362,"src":"4148:103:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":149,"nodeType":"Block","src":"4454:124:0","statements":[{"condition":{"id":141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4468:23:0","subExpression":{"arguments":[{"id":138,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"4477:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":139,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4483:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":137,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"4469:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4469:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":148,"nodeType":"IfStatement","src":"4464:108:0","trueBody":{"id":147,"nodeType":"Block","src":"4493:79:0","statements":[{"errorCall":{"arguments":[{"id":143,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4547:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":144,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"4556:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":142,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"4514:32:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32) pure"}},"id":145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4514:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":146,"nodeType":"RevertStatement","src":"4507:54:0"}]}}]},"documentation":{"id":130,"nodeType":"StructuredDocumentation","src":"4257:119:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":150,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4390:10:0","nodeType":"FunctionDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"role","nameLocation":"4409:4:0","nodeType":"VariableDeclaration","scope":150,"src":"4401:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4401:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":134,"mutability":"mutable","name":"account","nameLocation":"4423:7:0","nodeType":"VariableDeclaration","scope":150,"src":"4415:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":133,"name":"address","nodeType":"ElementaryTypeName","src":"4415:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4400:31:0"},"returnParameters":{"id":136,"nodeType":"ParameterList","parameters":[],"src":"4454:0:0"},"scope":362,"src":"4381:197:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1286],"body":{"id":170,"nodeType":"Block","src":"4833:117:0","statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"$","nameLocation":"4872:1:0","nodeType":"VariableDeclaration","scope":170,"src":"4843:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":159,"nodeType":"UserDefinedTypeName","pathNode":{"id":158,"name":"AccessControlStorage","nameLocations":["4843:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"4843:20:0"},"referencedDeclaration":35,"src":"4843:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":163,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":161,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"4876:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4876:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4843:59:0"},{"expression":{"expression":{"baseExpression":{"expression":{"id":164,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4919:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4921:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"4919:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":167,"indexExpression":{"id":166,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":153,"src":"4928:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4919:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4934:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"4919:24:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":157,"id":169,"nodeType":"Return","src":"4912:31:0"}]},"documentation":{"id":151,"nodeType":"StructuredDocumentation","src":"4584:170:0","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":171,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"4768:12:0","nodeType":"FunctionDefinition","parameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"role","nameLocation":"4789:4:0","nodeType":"VariableDeclaration","scope":171,"src":"4781:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":152,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4781:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4780:14:0"},"returnParameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":171,"src":"4824:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4824:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4823:9:0"},"scope":362,"src":"4759:191:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1294],"body":{"id":189,"nodeType":"Block","src":"5340:42:0","statements":[{"expression":{"arguments":[{"id":185,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"5361:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":186,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"5367:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":184,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"5350:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5350:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":188,"nodeType":"ExpressionStatement","src":"5350:25:0"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"4956:285:0","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":190,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":180,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"5333:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":179,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5320:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":182,"kind":"modifierInvocation","modifierName":{"id":178,"name":"onlyRole","nameLocations":["5311:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"5311:8:0"},"nodeType":"ModifierInvocation","src":"5311:28:0"}],"name":"grantRole","nameLocation":"5255:9:0","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"role","nameLocation":"5273:4:0","nodeType":"VariableDeclaration","scope":190,"src":"5265:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5265:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"account","nameLocation":"5287:7:0","nodeType":"VariableDeclaration","scope":190,"src":"5279:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":175,"name":"address","nodeType":"ElementaryTypeName","src":"5279:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5264:31:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[],"src":"5340:0:0"},"scope":362,"src":"5246:136:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1302],"body":{"id":208,"nodeType":"Block","src":"5757:43:0","statements":[{"expression":{"arguments":[{"id":204,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5779:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":205,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5785:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":203,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"5767:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5767:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":207,"nodeType":"ExpressionStatement","src":"5767:26:0"}]},"documentation":{"id":191,"nodeType":"StructuredDocumentation","src":"5388:269:0","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":209,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":199,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5750:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":198,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5737:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5737:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":201,"kind":"modifierInvocation","modifierName":{"id":197,"name":"onlyRole","nameLocations":["5728:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"5728:8:0"},"nodeType":"ModifierInvocation","src":"5728:28:0"}],"name":"revokeRole","nameLocation":"5671:10:0","nodeType":"FunctionDefinition","parameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"role","nameLocation":"5690:4:0","nodeType":"VariableDeclaration","scope":209,"src":"5682:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5682:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"account","nameLocation":"5704:7:0","nodeType":"VariableDeclaration","scope":209,"src":"5696:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"5696:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5681:31:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"5757:0:0"},"scope":362,"src":"5662:138:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1310],"body":{"id":231,"nodeType":"Block","src":"6427:166:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":217,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"6441:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":218,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"6463:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6463:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6441:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":225,"nodeType":"IfStatement","src":"6437:102:0","trueBody":{"id":224,"nodeType":"Block","src":"6477:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":221,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"6498:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":223,"nodeType":"RevertStatement","src":"6491:37:0"}]}},{"expression":{"arguments":[{"id":227,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"6561:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":228,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"6567:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":226,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"6549:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6549:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":230,"nodeType":"ExpressionStatement","src":"6549:37:0"}]},"documentation":{"id":210,"nodeType":"StructuredDocumentation","src":"5806:537:0","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":232,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"6357:12:0","nodeType":"FunctionDefinition","parameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"role","nameLocation":"6378:4:0","nodeType":"VariableDeclaration","scope":232,"src":"6370:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":211,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6370:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":214,"mutability":"mutable","name":"callerConfirmation","nameLocation":"6392:18:0","nodeType":"VariableDeclaration","scope":232,"src":"6384:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":213,"name":"address","nodeType":"ElementaryTypeName","src":"6384:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6369:42:0"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[],"src":"6427:0:0"},"scope":362,"src":"6348:245:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":267,"nodeType":"Block","src":"6791:245:0","statements":[{"assignments":[242],"declarations":[{"constant":false,"id":242,"mutability":"mutable","name":"$","nameLocation":"6830:1:0","nodeType":"VariableDeclaration","scope":267,"src":"6801:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":241,"nodeType":"UserDefinedTypeName","pathNode":{"id":240,"name":"AccessControlStorage","nameLocations":["6801:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"6801:20:0"},"referencedDeclaration":35,"src":"6801:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":245,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":243,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"6834:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6834:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6801:59:0"},{"assignments":[247],"declarations":[{"constant":false,"id":247,"mutability":"mutable","name":"previousAdminRole","nameLocation":"6878:17:0","nodeType":"VariableDeclaration","scope":267,"src":"6870:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6870:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":251,"initialValue":{"arguments":[{"id":249,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6911:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":248,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"6898:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6898:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6870:46:0"},{"expression":{"id":259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":252,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":242,"src":"6926:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6928:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"6926:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":256,"indexExpression":{"id":254,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6935:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6926:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6941:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"6926:24:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":258,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"6953:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6926:36:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":260,"nodeType":"ExpressionStatement","src":"6926:36:0"},{"eventCall":{"arguments":[{"id":262,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6994:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":263,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"7000:17:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":264,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"7019:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":261,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"6977:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6977:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":266,"nodeType":"EmitStatement","src":"6972:57:0"}]},"documentation":{"id":233,"nodeType":"StructuredDocumentation","src":"6599:114:0","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":268,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"6727:13:0","nodeType":"FunctionDefinition","parameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":235,"mutability":"mutable","name":"role","nameLocation":"6749:4:0","nodeType":"VariableDeclaration","scope":268,"src":"6741:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":234,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6741:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":237,"mutability":"mutable","name":"adminRole","nameLocation":"6763:9:0","nodeType":"VariableDeclaration","scope":268,"src":"6755:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6755:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6740:33:0"},"returnParameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"6791:0:0"},"scope":362,"src":"6718:318:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":314,"nodeType":"Block","src":"7353:304:0","statements":[{"assignments":[280],"declarations":[{"constant":false,"id":280,"mutability":"mutable","name":"$","nameLocation":"7392:1:0","nodeType":"VariableDeclaration","scope":314,"src":"7363:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":279,"nodeType":"UserDefinedTypeName","pathNode":{"id":278,"name":"AccessControlStorage","nameLocations":["7363:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"7363:20:0"},"referencedDeclaration":35,"src":"7363:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":283,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":281,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"7396:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7396:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7363:59:0"},{"condition":{"id":288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7436:23:0","subExpression":{"arguments":[{"id":285,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7445:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":286,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7451:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":284,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"7437:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7437:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":312,"nodeType":"Block","src":"7614:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7635:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":277,"id":311,"nodeType":"Return","src":"7628:12:0"}]},"id":313,"nodeType":"IfStatement","src":"7432:219:0","trueBody":{"id":309,"nodeType":"Block","src":"7461:147:0","statements":[{"expression":{"id":298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":289,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"7475:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7477:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"7475:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":293,"indexExpression":{"id":291,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7484:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7475:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7490:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"7475:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":296,"indexExpression":{"id":295,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7498:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7475:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7509:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7475:38:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":299,"nodeType":"ExpressionStatement","src":"7475:38:0"},{"eventCall":{"arguments":[{"id":301,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7544:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":302,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7550:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":303,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"7559:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7559:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":300,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1259,"src":"7532:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7532:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":306,"nodeType":"EmitStatement","src":"7527:45:0"},{"expression":{"hexValue":"74727565","id":307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7593:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":277,"id":308,"nodeType":"Return","src":"7586:11:0"}]}}]},"documentation":{"id":269,"nodeType":"StructuredDocumentation","src":"7042:223:0","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":315,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"7279:10:0","nodeType":"FunctionDefinition","parameters":{"id":274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"role","nameLocation":"7298:4:0","nodeType":"VariableDeclaration","scope":315,"src":"7290:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7290:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":273,"mutability":"mutable","name":"account","nameLocation":"7312:7:0","nodeType":"VariableDeclaration","scope":315,"src":"7304:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":272,"name":"address","nodeType":"ElementaryTypeName","src":"7304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7289:31:0"},"returnParameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":315,"src":"7347:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":275,"name":"bool","nodeType":"ElementaryTypeName","src":"7347:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7346:6:0"},"scope":362,"src":"7270:387:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":360,"nodeType":"Block","src":"7976:304:0","statements":[{"assignments":[327],"declarations":[{"constant":false,"id":327,"mutability":"mutable","name":"$","nameLocation":"8015:1:0","nodeType":"VariableDeclaration","scope":360,"src":"7986:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":326,"nodeType":"UserDefinedTypeName","pathNode":{"id":325,"name":"AccessControlStorage","nameLocations":["7986:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"7986:20:0"},"referencedDeclaration":35,"src":"7986:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":330,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":328,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"8019:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8019:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7986:59:0"},{"condition":{"arguments":[{"id":332,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8067:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":333,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8073:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":331,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"8059:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8059:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":358,"nodeType":"Block","src":"8237:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8258:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":324,"id":357,"nodeType":"Return","src":"8251:12:0"}]},"id":359,"nodeType":"IfStatement","src":"8055:219:0","trueBody":{"id":355,"nodeType":"Block","src":"8083:148:0","statements":[{"expression":{"id":344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":335,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"8097:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8099:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"8097:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":339,"indexExpression":{"id":337,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8106:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8097:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8112:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"8097:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":342,"indexExpression":{"id":341,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8120:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8097:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8131:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"8097:39:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"ExpressionStatement","src":"8097:39:0"},{"eventCall":{"arguments":[{"id":347,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8167:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":348,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8173:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":349,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"8182:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8182:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":346,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1268,"src":"8155:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8155:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":352,"nodeType":"EmitStatement","src":"8150:45:0"},{"expression":{"hexValue":"74727565","id":353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8216:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":324,"id":354,"nodeType":"Return","src":"8209:11:0"}]}}]},"documentation":{"id":316,"nodeType":"StructuredDocumentation","src":"7663:224:0","text":" @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":361,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"7901:11:0","nodeType":"FunctionDefinition","parameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"role","nameLocation":"7921:4:0","nodeType":"VariableDeclaration","scope":361,"src":"7913:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7913:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"account","nameLocation":"7935:7:0","nodeType":"VariableDeclaration","scope":361,"src":"7927:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":319,"name":"address","nodeType":"ElementaryTypeName","src":"7927:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7912:31:0"},"returnParameters":{"id":324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":361,"src":"7970:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":322,"name":"bool","nodeType":"ElementaryTypeName","src":"7970:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7969:6:0"},"scope":362,"src":"7892:388:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":363,"src":"2090:6192:0","usedErrors":[379,382,1238,1241],"usedEvents":[387,1250,1259,1268]}],"src":"108:8175:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[616]},"id":617,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":364,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:1"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":365,"nodeType":"StructuredDocumentation","src":"139:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":616,"linearizedBaseContracts":[616],"name":"Initializable","nameLocation":"2367:13:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":366,"nodeType":"StructuredDocumentation","src":"2387:293:1","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"id":373,"members":[{"constant":false,"id":369,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:1","nodeType":"VariableDeclaration","scope":373,"src":"2813:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":368,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:1","nodeType":"VariableDeclaration","scope":373,"src":"2950:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":371,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:1","nodeType":"StructDefinition","scope":616,"src":"2685:290:1","visibility":"public"},{"constant":true,"id":376,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:1","nodeType":"VariableDeclaration","scope":616,"src":"3098:115:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:1","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":377,"nodeType":"StructuredDocumentation","src":"3220:60:1","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":379,"name":"InvalidInitialization","nameLocation":"3291:21:1","nodeType":"ErrorDefinition","parameters":{"id":378,"nodeType":"ParameterList","parameters":[],"src":"3312:2:1"},"src":"3285:30:1"},{"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"3321:57:1","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":382,"name":"NotInitializing","nameLocation":"3389:15:1","nodeType":"ErrorDefinition","parameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"3404:2:1"},"src":"3383:24:1"},{"anonymous":false,"documentation":{"id":383,"nodeType":"StructuredDocumentation","src":"3413:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":387,"name":"Initialized","nameLocation":"3514:11:1","nodeType":"EventDefinition","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:1","nodeType":"VariableDeclaration","scope":387,"src":"3526:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":384,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:1"},"src":"3508:34:1"},{"body":{"id":469,"nodeType":"Block","src":"4092:1081:1","statements":[{"assignments":[392],"declarations":[{"constant":false,"id":392,"mutability":"mutable","name":"$","nameLocation":"4187:1:1","nodeType":"VariableDeclaration","scope":469,"src":"4158:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":391,"nodeType":"UserDefinedTypeName","pathNode":{"id":390,"name":"InitializableStorage","nameLocations":["4158:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"4158:20:1"},"referencedDeclaration":373,"src":"4158:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":395,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":393,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"4191:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:1"},{"assignments":[397],"declarations":[{"constant":false,"id":397,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:1","nodeType":"VariableDeclaration","scope":469,"src":"4279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":396,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":401,"initialValue":{"id":400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:1","subExpression":{"expression":{"id":398,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4302:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"4302:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:1"},{"assignments":[403],"declarations":[{"constant":false,"id":403,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:1","nodeType":"VariableDeclaration","scope":469,"src":"4327:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":402,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":406,"initialValue":{"expression":{"id":404,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4348:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"4348:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:1"},{"assignments":[408],"declarations":[{"constant":false,"id":408,"mutability":"mutable","name":"initialSetup","nameLocation":"4711:12:1","nodeType":"VariableDeclaration","scope":469,"src":"4706:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":407,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":414,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":409,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4726:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4741:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4726:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":412,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4746:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4726:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4706:54:1"},{"assignments":[416],"declarations":[{"constant":false,"id":416,"mutability":"mutable","name":"construction","nameLocation":"4775:12:1","nodeType":"VariableDeclaration","scope":469,"src":"4770:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":415,"name":"bool","nodeType":"ElementaryTypeName","src":"4770:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":429,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":417,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4790:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4805:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4790:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":422,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4818:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$616","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$616","typeString":"contract Initializable"}],"id":421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4810:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":420,"name":"address","nodeType":"ElementaryTypeName","src":"4810:7:1","typeDescriptions":{}}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4810:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4824:4:1","memberName":"code","nodeType":"MemberAccess","src":"4810:18:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4829:6:1","memberName":"length","nodeType":"MemberAccess","src":"4810:25:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4810:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4790:50:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4770:70:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4855:13:1","subExpression":{"id":430,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"4856:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4872:13:1","subExpression":{"id":432,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"4873:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4855:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":439,"nodeType":"IfStatement","src":"4851:91:1","trueBody":{"id":438,"nodeType":"Block","src":"4887:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":435,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"4908:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4908:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":437,"nodeType":"RevertStatement","src":"4901:30:1"}]}},{"expression":{"id":444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":440,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4951:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4953:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"4951:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4968:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4951:18:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":445,"nodeType":"ExpressionStatement","src":"4951:18:1"},{"condition":{"id":446,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4983:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":454,"nodeType":"IfStatement","src":"4979:67:1","trueBody":{"id":453,"nodeType":"Block","src":"4999:47:1","statements":[{"expression":{"id":451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":447,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"5013:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5015:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"5013:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5031:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5013:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":452,"nodeType":"ExpressionStatement","src":"5013:22:1"}]}},{"id":455,"nodeType":"PlaceholderStatement","src":"5055:1:1"},{"condition":{"id":456,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"5070:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":468,"nodeType":"IfStatement","src":"5066:101:1","trueBody":{"id":467,"nodeType":"Block","src":"5086:81:1","statements":[{"expression":{"id":461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":457,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"5100:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5102:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"5100:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5118:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5100:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":462,"nodeType":"ExpressionStatement","src":"5100:23:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5154:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":463,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"5142:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":466,"nodeType":"EmitStatement","src":"5137:19:1"}]}}]},"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"3548:516:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"id":470,"name":"initializer","nameLocation":"4078:11:1","nodeType":"ModifierDefinition","parameters":{"id":389,"nodeType":"ParameterList","parameters":[],"src":"4089:2:1"},"src":"4069:1104:1","virtual":false,"visibility":"internal"},{"body":{"id":516,"nodeType":"Block","src":"6291:392:1","statements":[{"assignments":[477],"declarations":[{"constant":false,"id":477,"mutability":"mutable","name":"$","nameLocation":"6386:1:1","nodeType":"VariableDeclaration","scope":516,"src":"6357:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":476,"nodeType":"UserDefinedTypeName","pathNode":{"id":475,"name":"InitializableStorage","nameLocations":["6357:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"6357:20:1"},"referencedDeclaration":373,"src":"6357:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":480,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":478,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"6390:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6357:59:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":481,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6431:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6433:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6431:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":483,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6450:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6452:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"6450:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":485,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6468:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6450:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6431:44:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":492,"nodeType":"IfStatement","src":"6427:105:1","trueBody":{"id":491,"nodeType":"Block","src":"6477:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":488,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"6498:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":490,"nodeType":"RevertStatement","src":"6491:30:1"}]}},{"expression":{"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":493,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6541:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6543:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"6541:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":496,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6558:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6541:24:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":498,"nodeType":"ExpressionStatement","src":"6541:24:1"},{"expression":{"id":503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":499,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6575:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6577:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6575:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6593:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6575:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":504,"nodeType":"ExpressionStatement","src":"6575:22:1"},{"id":505,"nodeType":"PlaceholderStatement","src":"6607:1:1"},{"expression":{"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":506,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6618:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":508,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6620:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6618:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6636:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6618:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":511,"nodeType":"ExpressionStatement","src":"6618:23:1"},{"eventCall":{"arguments":[{"id":513,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6668:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":512,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"6656:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6656:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":515,"nodeType":"EmitStatement","src":"6651:25:1"}]},"documentation":{"id":471,"nodeType":"StructuredDocumentation","src":"5179:1068:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":517,"name":"reinitializer","nameLocation":"6261:13:1","nodeType":"ModifierDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"version","nameLocation":"6282:7:1","nodeType":"VariableDeclaration","scope":517,"src":"6275:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":472,"name":"uint64","nodeType":"ElementaryTypeName","src":"6275:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6274:16:1"},"src":"6252:431:1","virtual":false,"visibility":"internal"},{"body":{"id":524,"nodeType":"Block","src":"6921:48:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":520,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"6931:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6931:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"6931:20:1"},{"id":523,"nodeType":"PlaceholderStatement","src":"6961:1:1"}]},"documentation":{"id":518,"nodeType":"StructuredDocumentation","src":"6689:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":525,"name":"onlyInitializing","nameLocation":"6902:16:1","nodeType":"ModifierDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"6918:2:1"},"src":"6893:76:1","virtual":false,"visibility":"internal"},{"body":{"id":537,"nodeType":"Block","src":"7136:89:1","statements":[{"condition":{"id":531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7150:18:1","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":529,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"7151:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7151:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":536,"nodeType":"IfStatement","src":"7146:73:1","trueBody":{"id":535,"nodeType":"Block","src":"7170:49:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":532,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"7191:15:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7191:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":534,"nodeType":"RevertStatement","src":"7184:24:1"}]}}]},"documentation":{"id":526,"nodeType":"StructuredDocumentation","src":"6975:104:1","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":538,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7093:18:1","nodeType":"FunctionDefinition","parameters":{"id":527,"nodeType":"ParameterList","parameters":[],"src":"7111:2:1"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[],"src":"7136:0:1"},"scope":616,"src":"7084:141:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":583,"nodeType":"Block","src":"7760:373:1","statements":[{"assignments":[544],"declarations":[{"constant":false,"id":544,"mutability":"mutable","name":"$","nameLocation":"7855:1:1","nodeType":"VariableDeclaration","scope":583,"src":"7826:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":543,"nodeType":"UserDefinedTypeName","pathNode":{"id":542,"name":"InitializableStorage","nameLocations":["7826:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"7826:20:1"},"referencedDeclaration":373,"src":"7826:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":547,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":545,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"7859:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7859:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7826:59:1"},{"condition":{"expression":{"id":548,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"7900:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7902:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"7900:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":554,"nodeType":"IfStatement","src":"7896:76:1","trueBody":{"id":553,"nodeType":"Block","src":"7917:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":550,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"7938:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7938:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":552,"nodeType":"RevertStatement","src":"7931:30:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":555,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"7985:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7987:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"7985:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8008:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":558,"name":"uint64","nodeType":"ElementaryTypeName","src":"8008:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":557,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8003:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8003:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8016:3:1","memberName":"max","nodeType":"MemberAccess","src":"8003:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7985:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":582,"nodeType":"IfStatement","src":"7981:146:1","trueBody":{"id":581,"nodeType":"Block","src":"8021:106:1","statements":[{"expression":{"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":563,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"8035:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8037:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"8035:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8057:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":567,"name":"uint64","nodeType":"ElementaryTypeName","src":"8057:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":566,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8052:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8065:3:1","memberName":"max","nodeType":"MemberAccess","src":"8052:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8035:33:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":572,"nodeType":"ExpressionStatement","src":"8035:33:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8104:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":575,"name":"uint64","nodeType":"ElementaryTypeName","src":"8104:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":574,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8099:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8099:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8112:3:1","memberName":"max","nodeType":"MemberAccess","src":"8099:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":573,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"8087:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8087:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":580,"nodeType":"EmitStatement","src":"8082:34:1"}]}}]},"documentation":{"id":539,"nodeType":"StructuredDocumentation","src":"7231:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":584,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7720:20:1","nodeType":"FunctionDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[],"src":"7740:2:1"},"returnParameters":{"id":541,"nodeType":"ParameterList","parameters":[],"src":"7760:0:1"},"scope":616,"src":"7711:422:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":594,"nodeType":"Block","src":"8308:63:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":590,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"8325:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8352:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"8325:39:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":589,"id":593,"nodeType":"Return","src":"8318:46:1"}]},"documentation":{"id":585,"nodeType":"StructuredDocumentation","src":"8139:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":595,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8252:22:1","nodeType":"FunctionDefinition","parameters":{"id":586,"nodeType":"ParameterList","parameters":[],"src":"8274:2:1"},"returnParameters":{"id":589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":595,"src":"8300:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":587,"name":"uint64","nodeType":"ElementaryTypeName","src":"8300:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8299:8:1"},"scope":616,"src":"8243:128:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":605,"nodeType":"Block","src":"8543:64:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":601,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"8560:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8587:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"8560:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":600,"id":604,"nodeType":"Return","src":"8553:47:1"}]},"documentation":{"id":596,"nodeType":"StructuredDocumentation","src":"8377:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":606,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8496:15:1","nodeType":"FunctionDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[],"src":"8511:2:1"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":606,"src":"8537:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":598,"name":"bool","nodeType":"ElementaryTypeName","src":"8537:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8536:6:1"},"scope":616,"src":"8487:120:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":614,"nodeType":"Block","src":"8827:80:1","statements":[{"AST":{"nodeType":"YulBlock","src":"8846:55:1","statements":[{"nodeType":"YulAssignment","src":"8860:31:1","value":{"name":"INITIALIZABLE_STORAGE","nodeType":"YulIdentifier","src":"8870:21:1"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"8860:6:1"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":611,"isOffset":false,"isSlot":true,"src":"8860:6:1","suffix":"slot","valueSize":1},{"declaration":376,"isOffset":false,"isSlot":false,"src":"8870:21:1","valueSize":1}],"id":613,"nodeType":"InlineAssembly","src":"8837:64:1"}]},"documentation":{"id":607,"nodeType":"StructuredDocumentation","src":"8613:67:1","text":" @dev Returns a pointer to the storage namespace."},"id":615,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"8746:24:1","nodeType":"FunctionDefinition","parameters":{"id":608,"nodeType":"ParameterList","parameters":[],"src":"8770:2:1"},"returnParameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"$","nameLocation":"8824:1:1","nodeType":"VariableDeclaration","scope":615,"src":"8795:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":610,"nodeType":"UserDefinedTypeName","pathNode":{"id":609,"name":"InitializableStorage","nameLocations":["8795:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"8795:20:1"},"referencedDeclaration":373,"src":"8795:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"8794:32:1"},"scope":616,"src":"8737:170:1","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":617,"src":"2349:6560:1","usedErrors":[379,382],"usedEvents":[387]}],"src":"113:8797:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[1649],"IERC1822Proxiable":[1346],"Initializable":[616],"UUPSUpgradeable":[798]},"id":799,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":618,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:2"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":620,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":1347,"src":"141:88:2","symbolAliases":[{"foreign":{"id":619,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"149:17:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":622,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":1650,"src":"230:84:2","symbolAliases":[{"foreign":{"id":621,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"238:12:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":624,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":617,"src":"315:50:2","symbolAliases":[{"foreign":{"id":623,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"323:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":626,"name":"Initializable","nameLocations":["1023:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"1023:13:2"},"id":627,"nodeType":"InheritanceSpecifier","src":"1023:13:2"},{"baseName":{"id":628,"name":"IERC1822Proxiable","nameLocations":["1038:17:2"],"nodeType":"IdentifierPath","referencedDeclaration":1346,"src":"1038:17:2"},"id":629,"nodeType":"InheritanceSpecifier","src":"1038:17:2"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":625,"nodeType":"StructuredDocumentation","src":"367:618:2","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism."},"fullyImplemented":false,"id":798,"linearizedBaseContracts":[798,1346,616],"name":"UUPSUpgradeable","nameLocation":"1004:15:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":630,"nodeType":"StructuredDocumentation","src":"1062:61:2","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":636,"mutability":"immutable","name":"__self","nameLocation":"1154:6:2","nodeType":"VariableDeclaration","scope":798,"src":"1128:48:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":634,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":632,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:2","typeDescriptions":{}}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":637,"nodeType":"StructuredDocumentation","src":"1183:631:2","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade."},"functionSelector":"ad3cb1cc","id":640,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:2","nodeType":"VariableDeclaration","scope":798,"src":"1819:58:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":638,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":641,"nodeType":"StructuredDocumentation","src":"1884:65:2","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":643,"name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:2","nodeType":"ErrorDefinition","parameters":{"id":642,"nodeType":"ParameterList","parameters":[],"src":"1987:2:2"},"src":"1954:36:2"},{"documentation":{"id":644,"nodeType":"StructuredDocumentation","src":"1996:68:2","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":648,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:2","nodeType":"ErrorDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":646,"mutability":"mutable","name":"slot","nameLocation":"2112:4:2","nodeType":"VariableDeclaration","scope":648,"src":"2104:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:2"},"src":"2069:49:2"},{"body":{"id":655,"nodeType":"Block","src":"2643:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":651,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":730,"src":"2653:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2653:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":653,"nodeType":"ExpressionStatement","src":"2653:13:2"},{"id":654,"nodeType":"PlaceholderStatement","src":"2676:1:2"}]},"documentation":{"id":649,"nodeType":"StructuredDocumentation","src":"2124:493:2","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":656,"name":"onlyProxy","nameLocation":"2631:9:2","nodeType":"ModifierDefinition","parameters":{"id":650,"nodeType":"ParameterList","parameters":[],"src":"2640:2:2"},"src":"2622:62:2","virtual":false,"visibility":"internal"},{"body":{"id":663,"nodeType":"Block","src":"2914:48:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":659,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"2924:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2924:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":661,"nodeType":"ExpressionStatement","src":"2924:20:2"},{"id":662,"nodeType":"PlaceholderStatement","src":"2954:1:2"}]},"documentation":{"id":657,"nodeType":"StructuredDocumentation","src":"2690:195:2","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":664,"name":"notDelegated","nameLocation":"2899:12:2","nodeType":"ModifierDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[],"src":"2911:2:2"},"src":"2890:72:2","virtual":false,"visibility":"internal"},{"body":{"id":669,"nodeType":"Block","src":"3028:7:2","statements":[]},"id":670,"implemented":true,"kind":"function","modifiers":[{"id":667,"kind":"modifierInvocation","modifierName":{"id":666,"name":"onlyInitializing","nameLocations":["3011:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3011:16:2"},"nodeType":"ModifierInvocation","src":"3011:16:2"}],"name":"__UUPSUpgradeable_init","nameLocation":"2977:22:2","nodeType":"FunctionDefinition","parameters":{"id":665,"nodeType":"ParameterList","parameters":[],"src":"2999:2:2"},"returnParameters":{"id":668,"nodeType":"ParameterList","parameters":[],"src":"3028:0:2"},"scope":798,"src":"2968:67:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":675,"nodeType":"Block","src":"3111:7:2","statements":[]},"id":676,"implemented":true,"kind":"function","modifiers":[{"id":673,"kind":"modifierInvocation","modifierName":{"id":672,"name":"onlyInitializing","nameLocations":["3094:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3094:16:2"},"nodeType":"ModifierInvocation","src":"3094:16:2"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3050:32:2","nodeType":"FunctionDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[],"src":"3082:2:2"},"returnParameters":{"id":674,"nodeType":"ParameterList","parameters":[],"src":"3111:0:2"},"scope":798,"src":"3041:77:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1345],"body":{"id":687,"nodeType":"Block","src":"3783:56:2","statements":[{"expression":{"expression":{"id":684,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"3800:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3813:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1376,"src":"3800:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":683,"id":686,"nodeType":"Return","src":"3793:39:2"}]},"documentation":{"id":677,"nodeType":"StructuredDocumentation","src":"3123:577:2","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":688,"implemented":true,"kind":"function","modifiers":[{"id":680,"kind":"modifierInvocation","modifierName":{"id":679,"name":"notDelegated","nameLocations":["3752:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":664,"src":"3752:12:2"},"nodeType":"ModifierInvocation","src":"3752:12:2"}],"name":"proxiableUUID","nameLocation":"3714:13:2","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[],"src":"3727:2:2"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":688,"src":"3774:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3774:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3773:9:2"},"scope":798,"src":"3705:134:2","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":707,"nodeType":"Block","src":"4263:109:2","statements":[{"expression":{"arguments":[{"id":699,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4291:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":698,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"4273:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4273:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":701,"nodeType":"ExpressionStatement","src":"4273:36:2"},{"expression":{"arguments":[{"id":703,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4341:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":704,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4360:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":702,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"4319:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4319:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":706,"nodeType":"ExpressionStatement","src":"4319:46:2"}]},"documentation":{"id":689,"nodeType":"StructuredDocumentation","src":"3845:308:2","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":708,"implemented":true,"kind":"function","modifiers":[{"id":696,"kind":"modifierInvocation","modifierName":{"id":695,"name":"onlyProxy","nameLocations":["4253:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":656,"src":"4253:9:2"},"nodeType":"ModifierInvocation","src":"4253:9:2"}],"name":"upgradeToAndCall","nameLocation":"4167:16:2","nodeType":"FunctionDefinition","parameters":{"id":694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"mutability":"mutable","name":"newImplementation","nameLocation":"4192:17:2","nodeType":"VariableDeclaration","scope":708,"src":"4184:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":690,"name":"address","nodeType":"ElementaryTypeName","src":"4184:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":693,"mutability":"mutable","name":"data","nameLocation":"4224:4:2","nodeType":"VariableDeclaration","scope":708,"src":"4211:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":692,"name":"bytes","nodeType":"ElementaryTypeName","src":"4211:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4183:46:2"},"returnParameters":{"id":697,"nodeType":"ParameterList","parameters":[],"src":"4263:0:2"},"scope":798,"src":"4158:214:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":729,"nodeType":"Block","src":"4644:267:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":714,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4679:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4671:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":712,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:2","typeDescriptions":{}}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4671:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":716,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"4688:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4671:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":718,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"4749:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4762:17:2","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":1407,"src":"4749:30:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":721,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"4785:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4749:42:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4671:120:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":728,"nodeType":"IfStatement","src":"4654:251:2","trueBody":{"id":727,"nodeType":"Block","src":"4844:61:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":724,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"4865:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":726,"nodeType":"RevertStatement","src":"4858:36:2"}]}}]},"documentation":{"id":709,"nodeType":"StructuredDocumentation","src":"4378:216:2","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n See {_onlyProxy}."},"id":730,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4608:11:2","nodeType":"FunctionDefinition","parameters":{"id":710,"nodeType":"ParameterList","parameters":[],"src":"4619:2:2"},"returnParameters":{"id":711,"nodeType":"ParameterList","parameters":[],"src":"4644:0:2"},"scope":798,"src":"4599:312:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":745,"nodeType":"Block","src":"5080:161:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":736,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5102:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5094:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":734,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:2","typeDescriptions":{}}},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":738,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"5111:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5094:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":744,"nodeType":"IfStatement","src":"5090:145:2","trueBody":{"id":743,"nodeType":"Block","src":"5119:116:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":740,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"5195:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5195:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":742,"nodeType":"RevertStatement","src":"5188:36:2"}]}}]},"documentation":{"id":731,"nodeType":"StructuredDocumentation","src":"4917:106:2","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":746,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5037:18:2","nodeType":"FunctionDefinition","parameters":{"id":732,"nodeType":"ParameterList","parameters":[],"src":"5055:2:2"},"returnParameters":{"id":733,"nodeType":"ParameterList","parameters":[],"src":"5080:0:2"},"scope":798,"src":"5028:213:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":747,"nodeType":"StructuredDocumentation","src":"5247:372:2","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```"},"id":752,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5633:17:2","nodeType":"FunctionDefinition","parameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"newImplementation","nameLocation":"5659:17:2","nodeType":"VariableDeclaration","scope":752,"src":"5651:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":748,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:27:2"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[],"src":"5694:0:2"},"scope":798,"src":"5624:71:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":796,"nodeType":"Block","src":"6137:453:2","statements":[{"clauses":[{"block":{"id":785,"nodeType":"Block","src":"6227:212:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":768,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":769,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"6253:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6266:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1376,"src":"6253:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6245:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":777,"nodeType":"IfStatement","src":"6241:120:2","trueBody":{"id":776,"nodeType":"Block","src":"6287:74:2","statements":[{"errorCall":{"arguments":[{"id":773,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"6341:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":772,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"6312:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":775,"nodeType":"RevertStatement","src":"6305:41:2"}]}},{"expression":{"arguments":[{"id":781,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6404:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":782,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"6423:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":778,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"6374:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6387:16:2","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"6374:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":784,"nodeType":"ExpressionStatement","src":"6374:54:2"}]},"errorName":"","id":786,"nodeType":"TryCatchClause","parameters":{"id":767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"slot","nameLocation":"6221:4:2","nodeType":"VariableDeclaration","scope":786,"src":"6213:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6213:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6212:14:2"},"src":"6204:235:2"},{"block":{"id":793,"nodeType":"Block","src":"6446:138:2","statements":[{"errorCall":{"arguments":[{"id":790,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6555:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":787,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"6513:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6526:28:2","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":1381,"src":"6513:41:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6513:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":792,"nodeType":"RevertStatement","src":"6506:67:2"}]},"errorName":"","id":794,"nodeType":"TryCatchClause","src":"6440:144:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":761,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6169:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":760,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"6151:17:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$1346_$","typeString":"type(contract IERC1822Proxiable)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$1346","typeString":"contract IERC1822Proxiable"}},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6188:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":1345,"src":"6151:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:52:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":795,"nodeType":"TryStatement","src":"6147:437:2"}]},"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"5701:346:2","text":" @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC1967.\n Emits an {IERC1967-Upgraded} event."},"id":797,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6061:21:2","nodeType":"FunctionDefinition","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"newImplementation","nameLocation":"6091:17:2","nodeType":"VariableDeclaration","scope":797,"src":"6083:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"6083:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"data","nameLocation":"6123:4:2","nodeType":"VariableDeclaration","scope":797,"src":"6110:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":756,"name":"bytes","nodeType":"ElementaryTypeName","src":"6110:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6082:46:2"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"6137:0:2"},"scope":798,"src":"6052:538:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":799,"src":"986:5606:2","usedErrors":[379,382,643,648,1381,1394,1672,1675],"usedEvents":[387,1360]}],"src":"115:6478:2"},"id":2},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[844],"Initializable":[616]},"id":845,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":800,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:3"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":802,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":845,"sourceUnit":617,"src":"126:63:3","symbolAliases":[{"foreign":{"id":801,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"134:13:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":804,"name":"Initializable","nameLocations":["728:13:3"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"728:13:3"},"id":805,"nodeType":"InheritanceSpecifier","src":"728:13:3"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":803,"nodeType":"StructuredDocumentation","src":"191:496:3","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,"id":844,"linearizedBaseContracts":[844,616],"name":"ContextUpgradeable","nameLocation":"706:18:3","nodeType":"ContractDefinition","nodes":[{"body":{"id":810,"nodeType":"Block","src":"800:7:3","statements":[]},"id":811,"implemented":true,"kind":"function","modifiers":[{"id":808,"kind":"modifierInvocation","modifierName":{"id":807,"name":"onlyInitializing","nameLocations":["783:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"783:16:3"},"nodeType":"ModifierInvocation","src":"783:16:3"}],"name":"__Context_init","nameLocation":"757:14:3","nodeType":"FunctionDefinition","parameters":{"id":806,"nodeType":"ParameterList","parameters":[],"src":"771:2:3"},"returnParameters":{"id":809,"nodeType":"ParameterList","parameters":[],"src":"800:0:3"},"scope":844,"src":"748:59:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":816,"nodeType":"Block","src":"875:7:3","statements":[]},"id":817,"implemented":true,"kind":"function","modifiers":[{"id":814,"kind":"modifierInvocation","modifierName":{"id":813,"name":"onlyInitializing","nameLocations":["858:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"858:16:3"},"nodeType":"ModifierInvocation","src":"858:16:3"}],"name":"__Context_init_unchained","nameLocation":"822:24:3","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[],"src":"846:2:3"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"875:0:3"},"scope":844,"src":"813:69:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":825,"nodeType":"Block","src":"949:34:3","statements":[{"expression":{"expression":{"id":822,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:3","memberName":"sender","nodeType":"MemberAccess","src":"966:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":821,"id":824,"nodeType":"Return","src":"959:17:3"}]},"id":826,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:3","nodeType":"FunctionDefinition","parameters":{"id":818,"nodeType":"ParameterList","parameters":[],"src":"906:2:3"},"returnParameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":826,"src":"940:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":819,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:3"},"scope":844,"src":"887:96:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":834,"nodeType":"Block","src":"1056:32:3","statements":[{"expression":{"expression":{"id":831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:3","memberName":"data","nodeType":"MemberAccess","src":"1073:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":830,"id":833,"nodeType":"Return","src":"1066:15:3"}]},"id":835,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:3","nodeType":"FunctionDefinition","parameters":{"id":827,"nodeType":"ParameterList","parameters":[],"src":"1006:2:3"},"returnParameters":{"id":830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":835,"src":"1040:14:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":828,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:3"},"scope":844,"src":"989:99:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":842,"nodeType":"Block","src":"1166:25:3","statements":[{"expression":{"hexValue":"30","id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":839,"id":841,"nodeType":"Return","src":"1176:8:3"}]},"id":843,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:3","nodeType":"FunctionDefinition","parameters":{"id":836,"nodeType":"ParameterList","parameters":[],"src":"1123:2:3"},"returnParameters":{"id":839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":843,"src":"1157:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":837,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:3"},"scope":844,"src":"1094:97:3","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":845,"src":"688:505:3","usedErrors":[379,382],"usedEvents":[387]}],"src":"101:1093:3"},"id":3},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","exportedSymbols":{"EIP712Upgradeable":[1188],"IERC5267":[1336],"Initializable":[616],"MessageHashUtils":[2351]},"id":1189,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":846,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:4"},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","id":848,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1189,"sourceUnit":2352,"src":"139:97:4","symbolAliases":[{"foreign":{"id":847,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"147:16:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","file":"@openzeppelin/contracts/interfaces/IERC5267.sol","id":850,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1189,"sourceUnit":1337,"src":"237:73:4","symbolAliases":[{"foreign":{"id":849,"name":"IERC5267","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"245:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":852,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1189,"sourceUnit":617,"src":"311:66:4","symbolAliases":[{"foreign":{"id":851,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"319:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":854,"name":"Initializable","nameLocations":["1998:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"1998:13:4"},"id":855,"nodeType":"InheritanceSpecifier","src":"1998:13:4"},{"baseName":{"id":856,"name":"IERC5267","nameLocations":["2013:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1336,"src":"2013:8:4"},"id":857,"nodeType":"InheritanceSpecifier","src":"2013:8:4"}],"canonicalName":"EIP712Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":853,"nodeType":"StructuredDocumentation","src":"379:1579:4","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n separator from the immutable values, which is cheaper than accessing a cached version in cold storage."},"fullyImplemented":true,"id":1188,"linearizedBaseContracts":[1188,1336,616],"name":"EIP712Upgradeable","nameLocation":"1977:17:4","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":862,"mutability":"constant","name":"TYPE_HASH","nameLocation":"2053:9:4","nodeType":"VariableDeclaration","scope":1188,"src":"2028:140:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2028:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2083:84:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":859,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2073:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2073:95:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"canonicalName":"EIP712Upgradeable.EIP712Storage","documentation":{"id":863,"nodeType":"StructuredDocumentation","src":"2175:64:4","text":"@custom:storage-location erc7201:openzeppelin.storage.EIP712"},"id":874,"members":[{"constant":false,"id":866,"mutability":"mutable","name":"_hashedName","nameLocation":"2332:11:4","nodeType":"VariableDeclaration","scope":874,"src":"2324:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":865,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2324:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":869,"mutability":"mutable","name":"_hashedVersion","nameLocation":"2413:14:4","nodeType":"VariableDeclaration","scope":874,"src":"2405:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2405:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":871,"mutability":"mutable","name":"_name","nameLocation":"2445:5:4","nodeType":"VariableDeclaration","scope":874,"src":"2438:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":870,"name":"string","nodeType":"ElementaryTypeName","src":"2438:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":873,"mutability":"mutable","name":"_version","nameLocation":"2467:8:4","nodeType":"VariableDeclaration","scope":874,"src":"2460:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":872,"name":"string","nodeType":"ElementaryTypeName","src":"2460:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"EIP712Storage","nameLocation":"2251:13:4","nodeType":"StructDefinition","scope":1188,"src":"2244:238:4","visibility":"public"},{"constant":true,"id":877,"mutability":"constant","name":"EIP712StorageLocation","nameLocation":"2623:21:4","nodeType":"VariableDeclaration","scope":1188,"src":"2598:115:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":875,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2598:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861313661343664393432363163373531376363386666383966363163306365393335393865336338343938303130313164656536343961366135353764313030","id":876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:66:4","typeDescriptions":{"typeIdentifier":"t_rational_73010143390315934406010559831118728393600729754696197287367516085911467577600_by_1","typeString":"int_const 7301...(69 digits omitted)...7600"},"value":"0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100"},"visibility":"private"},{"body":{"id":884,"nodeType":"Block","src":"2796:80:4","statements":[{"AST":{"nodeType":"YulBlock","src":"2815:55:4","statements":[{"nodeType":"YulAssignment","src":"2829:31:4","value":{"name":"EIP712StorageLocation","nodeType":"YulIdentifier","src":"2839:21:4"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"2829:6:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":881,"isOffset":false,"isSlot":true,"src":"2829:6:4","suffix":"slot","valueSize":1},{"declaration":877,"isOffset":false,"isSlot":false,"src":"2839:21:4","valueSize":1}],"id":883,"nodeType":"InlineAssembly","src":"2806:64:4"}]},"id":885,"implemented":true,"kind":"function","modifiers":[],"name":"_getEIP712Storage","nameLocation":"2729:17:4","nodeType":"FunctionDefinition","parameters":{"id":878,"nodeType":"ParameterList","parameters":[],"src":"2746:2:4"},"returnParameters":{"id":882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":881,"mutability":"mutable","name":"$","nameLocation":"2793:1:4","nodeType":"VariableDeclaration","scope":885,"src":"2771:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":880,"nodeType":"UserDefinedTypeName","pathNode":{"id":879,"name":"EIP712Storage","nameLocations":["2771:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"2771:13:4"},"referencedDeclaration":874,"src":"2771:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"src":"2770:25:4"},"scope":1188,"src":"2720:156:4","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":900,"nodeType":"Block","src":"3538:55:4","statements":[{"expression":{"arguments":[{"id":896,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"3572:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":897,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"3578:7:4","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"}],"id":895,"name":"__EIP712_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"3548:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3548:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":899,"nodeType":"ExpressionStatement","src":"3548:38:4"}]},"documentation":{"id":886,"nodeType":"StructuredDocumentation","src":"2882:559:4","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":901,"implemented":true,"kind":"function","modifiers":[{"id":893,"kind":"modifierInvocation","modifierName":{"id":892,"name":"onlyInitializing","nameLocations":["3521:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3521:16:4"},"nodeType":"ModifierInvocation","src":"3521:16:4"}],"name":"__EIP712_init","nameLocation":"3455:13:4","nodeType":"FunctionDefinition","parameters":{"id":891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"name","nameLocation":"3483:4:4","nodeType":"VariableDeclaration","scope":901,"src":"3469:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":887,"name":"string","nodeType":"ElementaryTypeName","src":"3469:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":890,"mutability":"mutable","name":"version","nameLocation":"3503:7:4","nodeType":"VariableDeclaration","scope":901,"src":"3489:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":889,"name":"string","nodeType":"ElementaryTypeName","src":"3489:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3468:43:4"},"returnParameters":{"id":894,"nodeType":"ParameterList","parameters":[],"src":"3538:0:4"},"scope":1188,"src":"3446:147:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":940,"nodeType":"Block","src":"3701:228:4","statements":[{"assignments":[912],"declarations":[{"constant":false,"id":912,"mutability":"mutable","name":"$","nameLocation":"3733:1:4","nodeType":"VariableDeclaration","scope":940,"src":"3711:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":911,"nodeType":"UserDefinedTypeName","pathNode":{"id":910,"name":"EIP712Storage","nameLocations":["3711:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"3711:13:4"},"referencedDeclaration":874,"src":"3711:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":915,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":913,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"3737:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3737:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3711:45:4"},{"expression":{"id":920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":916,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3766:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3768:5:4","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":871,"src":"3766:7:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":919,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"3776:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3766:14:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":921,"nodeType":"ExpressionStatement","src":"3766:14:4"},{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":922,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3790:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":924,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3792:8:4","memberName":"_version","nodeType":"MemberAccess","referencedDeclaration":873,"src":"3790:10:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":925,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":905,"src":"3803:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3790:20:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":927,"nodeType":"ExpressionStatement","src":"3790:20:4"},{"expression":{"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":928,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3875:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3877:11:4","memberName":"_hashedName","nodeType":"MemberAccess","referencedDeclaration":866,"src":"3875:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3891:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3875:17:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":933,"nodeType":"ExpressionStatement","src":"3875:17:4"},{"expression":{"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":934,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3902:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3904:14:4","memberName":"_hashedVersion","nodeType":"MemberAccess","referencedDeclaration":869,"src":"3902:16:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3921:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3902:20:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":939,"nodeType":"ExpressionStatement","src":"3902:20:4"}]},"id":941,"implemented":true,"kind":"function","modifiers":[{"id":908,"kind":"modifierInvocation","modifierName":{"id":907,"name":"onlyInitializing","nameLocations":["3684:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3684:16:4"},"nodeType":"ModifierInvocation","src":"3684:16:4"}],"name":"__EIP712_init_unchained","nameLocation":"3608:23:4","nodeType":"FunctionDefinition","parameters":{"id":906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"name","nameLocation":"3646:4:4","nodeType":"VariableDeclaration","scope":941,"src":"3632:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":902,"name":"string","nodeType":"ElementaryTypeName","src":"3632:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":905,"mutability":"mutable","name":"version","nameLocation":"3666:7:4","nodeType":"VariableDeclaration","scope":941,"src":"3652:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":904,"name":"string","nodeType":"ElementaryTypeName","src":"3652:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3631:43:4"},"returnParameters":{"id":909,"nodeType":"ParameterList","parameters":[],"src":"3701:0:4"},"scope":1188,"src":"3599:330:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":950,"nodeType":"Block","src":"4077:47:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":947,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"4094:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4094:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":946,"id":949,"nodeType":"Return","src":"4087:30:4"}]},"documentation":{"id":942,"nodeType":"StructuredDocumentation","src":"3935:75:4","text":" @dev Returns the domain separator for the current chain."},"id":951,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nameLocation":"4024:18:4","nodeType":"FunctionDefinition","parameters":{"id":943,"nodeType":"ParameterList","parameters":[],"src":"4042:2:4"},"returnParameters":{"id":946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":951,"src":"4068:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4068:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4067:9:4"},"scope":1188,"src":"4015:109:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":973,"nodeType":"Block","src":"4194:127:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":959,"name":"TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":862,"src":"4232:9:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":960,"name":"_EIP712NameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"4243:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4243:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":962,"name":"_EIP712VersionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"4262:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":964,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4284:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4290:7:4","memberName":"chainid","nodeType":"MemberAccess","src":"4284:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":968,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4307:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712Upgradeable_$1188","typeString":"contract EIP712Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712Upgradeable_$1188","typeString":"contract EIP712Upgradeable"}],"id":967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4299:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":966,"name":"address","nodeType":"ElementaryTypeName","src":"4299:7:4","typeDescriptions":{}}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4299:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":957,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4221:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4225:6:4","memberName":"encode","nodeType":"MemberAccess","src":"4221:10:4","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4221:92:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":956,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4211:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4211:103:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":955,"id":972,"nodeType":"Return","src":"4204:110:4"}]},"id":974,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nameLocation":"4139:21:4","nodeType":"FunctionDefinition","parameters":{"id":952,"nodeType":"ParameterList","parameters":[],"src":"4160:2:4"},"returnParameters":{"id":955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":974,"src":"4185:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4185:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4184:9:4"},"scope":1188,"src":"4130:191:4","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":989,"nodeType":"Block","src":"5032:90:4","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":984,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"5082:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5082:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":986,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"5104:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":982,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"5049:16:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MessageHashUtils_$2351_$","typeString":"type(library MessageHashUtils)"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5066:15:4","memberName":"toTypedDataHash","nodeType":"MemberAccess","referencedDeclaration":2350,"src":"5049:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5049:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":981,"id":988,"nodeType":"Return","src":"5042:73:4"}]},"documentation":{"id":975,"nodeType":"StructuredDocumentation","src":"4327:614:4","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":990,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nameLocation":"4955:16:4","nodeType":"FunctionDefinition","parameters":{"id":978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":977,"mutability":"mutable","name":"structHash","nameLocation":"4980:10:4","nodeType":"VariableDeclaration","scope":990,"src":"4972:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4972:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4971:20:4"},"returnParameters":{"id":981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":980,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":990,"src":"5023:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5023:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5022:9:4"},"scope":1188,"src":"4946:176:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1335],"body":{"id":1050,"nodeType":"Block","src":"5501:575:4","statements":[{"assignments":[1011],"declarations":[{"constant":false,"id":1011,"mutability":"mutable","name":"$","nameLocation":"5533:1:4","nodeType":"VariableDeclaration","scope":1050,"src":"5511:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1010,"nodeType":"UserDefinedTypeName","pathNode":{"id":1009,"name":"EIP712Storage","nameLocations":["5511:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"5511:13:4"},"referencedDeclaration":874,"src":"5511:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1014,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1012,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"5537:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5537:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5511:45:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1016,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1011,"src":"5777:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5779:11:4","memberName":"_hashedName","nodeType":"MemberAccess","referencedDeclaration":866,"src":"5777:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5794:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5777:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1020,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1011,"src":"5799:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5801:14:4","memberName":"_hashedVersion","nodeType":"MemberAccess","referencedDeclaration":869,"src":"5799:16:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5819:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5799:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5777:43:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4549503731323a20556e696e697469616c697a6564","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5822:23:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade","typeString":"literal_string \"EIP712: Uninitialized\""},"value":"EIP712: Uninitialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade","typeString":"literal_string \"EIP712: Uninitialized\""}],"id":1015,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5769:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5769:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1027,"nodeType":"ExpressionStatement","src":"5769:77:4"},{"expression":{"components":[{"hexValue":"0f","id":1028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"5878:7:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c","typeString":"literal_string hex\"0f\""},"value":"\u000f"},{"arguments":[],"expression":{"argumentTypes":[],"id":1029,"name":"_EIP712Name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"5908:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5908:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1031,"name":"_EIP712Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1083,"src":"5935:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5935:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1033,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5965:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5971:7:4","memberName":"chainid","nodeType":"MemberAccess","src":"5965:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":1037,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6000:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712Upgradeable_$1188","typeString":"contract EIP712Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712Upgradeable_$1188","typeString":"contract EIP712Upgradeable"}],"id":1036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5992:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1035,"name":"address","nodeType":"ElementaryTypeName","src":"5992:7:4","typeDescriptions":{}}},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5992:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6027:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6019:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1039,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6019:7:4","typeDescriptions":{}}},"id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6019:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":1046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6057:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6043:13:4","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":1043,"name":"uint256","nodeType":"ElementaryTypeName","src":"6047:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ArrayTypeName","src":"6047:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":1047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6043:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":1048,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5864:205:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(literal_string hex\"0f\",string memory,string memory,uint256,address,bytes32,uint256[] memory)"}},"functionReturnParameters":1008,"id":1049,"nodeType":"Return","src":"5857:212:4"}]},"documentation":{"id":991,"nodeType":"StructuredDocumentation","src":"5128:40:4","text":" @dev See {IERC-5267}."},"functionSelector":"84b0196e","id":1051,"implemented":true,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"5182:12:4","nodeType":"FunctionDefinition","parameters":{"id":992,"nodeType":"ParameterList","parameters":[],"src":"5194:2:4"},"returnParameters":{"id":1008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":994,"mutability":"mutable","name":"fields","nameLocation":"5278:6:4","nodeType":"VariableDeclaration","scope":1051,"src":"5271:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":993,"name":"bytes1","nodeType":"ElementaryTypeName","src":"5271:6:4","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":996,"mutability":"mutable","name":"name","nameLocation":"5312:4:4","nodeType":"VariableDeclaration","scope":1051,"src":"5298:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":995,"name":"string","nodeType":"ElementaryTypeName","src":"5298:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":998,"mutability":"mutable","name":"version","nameLocation":"5344:7:4","nodeType":"VariableDeclaration","scope":1051,"src":"5330:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":997,"name":"string","nodeType":"ElementaryTypeName","src":"5330:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1000,"mutability":"mutable","name":"chainId","nameLocation":"5373:7:4","nodeType":"VariableDeclaration","scope":1051,"src":"5365:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":999,"name":"uint256","nodeType":"ElementaryTypeName","src":"5365:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1002,"mutability":"mutable","name":"verifyingContract","nameLocation":"5402:17:4","nodeType":"VariableDeclaration","scope":1051,"src":"5394:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1001,"name":"address","nodeType":"ElementaryTypeName","src":"5394:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1004,"mutability":"mutable","name":"salt","nameLocation":"5441:4:4","nodeType":"VariableDeclaration","scope":1051,"src":"5433:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1003,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5433:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1007,"mutability":"mutable","name":"extensions","nameLocation":"5476:10:4","nodeType":"VariableDeclaration","scope":1051,"src":"5459:27:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1005,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ArrayTypeName","src":"5459:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5257:239:4"},"scope":1188,"src":"5173:903:4","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1066,"nodeType":"Block","src":"6369:86:4","statements":[{"assignments":[1059],"declarations":[{"constant":false,"id":1059,"mutability":"mutable","name":"$","nameLocation":"6401:1:4","nodeType":"VariableDeclaration","scope":1066,"src":"6379:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1058,"nodeType":"UserDefinedTypeName","pathNode":{"id":1057,"name":"EIP712Storage","nameLocations":["6379:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"6379:13:4"},"referencedDeclaration":874,"src":"6379:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1062,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1060,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"6405:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6405:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6379:45:4"},{"expression":{"expression":{"id":1063,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1059,"src":"6441:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6443:5:4","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":871,"src":"6441:7:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1056,"id":1065,"nodeType":"Return","src":"6434:14:4"}]},"documentation":{"id":1052,"nodeType":"StructuredDocumentation","src":"6082:213:4","text":" @dev The name parameter for the EIP712 domain.\n NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n are a concern."},"id":1067,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712Name","nameLocation":"6309:11:4","nodeType":"FunctionDefinition","parameters":{"id":1053,"nodeType":"ParameterList","parameters":[],"src":"6320:2:4"},"returnParameters":{"id":1056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1067,"src":"6354:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1054,"name":"string","nodeType":"ElementaryTypeName","src":"6354:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6353:15:4"},"scope":1188,"src":"6300:155:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1082,"nodeType":"Block","src":"6754:89:4","statements":[{"assignments":[1075],"declarations":[{"constant":false,"id":1075,"mutability":"mutable","name":"$","nameLocation":"6786:1:4","nodeType":"VariableDeclaration","scope":1082,"src":"6764:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1074,"nodeType":"UserDefinedTypeName","pathNode":{"id":1073,"name":"EIP712Storage","nameLocations":["6764:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"6764:13:4"},"referencedDeclaration":874,"src":"6764:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1078,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1076,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"6790:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6790:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6764:45:4"},{"expression":{"expression":{"id":1079,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"6826:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6828:8:4","memberName":"_version","nodeType":"MemberAccess","referencedDeclaration":873,"src":"6826:10:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1072,"id":1081,"nodeType":"Return","src":"6819:17:4"}]},"documentation":{"id":1068,"nodeType":"StructuredDocumentation","src":"6461:216:4","text":" @dev The version parameter for the EIP712 domain.\n NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n are a concern."},"id":1083,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712Version","nameLocation":"6691:14:4","nodeType":"FunctionDefinition","parameters":{"id":1069,"nodeType":"ParameterList","parameters":[],"src":"6705:2:4"},"returnParameters":{"id":1072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1071,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1083,"src":"6739:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1070,"name":"string","nodeType":"ElementaryTypeName","src":"6739:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6738:15:4"},"scope":1188,"src":"6682:161:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1134,"nodeType":"Block","src":"7117:628:4","statements":[{"assignments":[1091],"declarations":[{"constant":false,"id":1091,"mutability":"mutable","name":"$","nameLocation":"7149:1:4","nodeType":"VariableDeclaration","scope":1134,"src":"7127:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1090,"nodeType":"UserDefinedTypeName","pathNode":{"id":1089,"name":"EIP712Storage","nameLocations":["7127:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"7127:13:4"},"referencedDeclaration":874,"src":"7127:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1094,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1092,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"7153:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7153:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7127:45:4"},{"assignments":[1096],"declarations":[{"constant":false,"id":1096,"mutability":"mutable","name":"name","nameLocation":"7196:4:4","nodeType":"VariableDeclaration","scope":1134,"src":"7182:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1095,"name":"string","nodeType":"ElementaryTypeName","src":"7182:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1099,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1097,"name":"_EIP712Name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"7203:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7203:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"7182:34:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1102,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"7236:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7230:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1100,"name":"bytes","nodeType":"ElementaryTypeName","src":"7230:5:4","typeDescriptions":{}}},"id":1103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7230:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7242:6:4","memberName":"length","nodeType":"MemberAccess","src":"7230:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7230:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1132,"nodeType":"Block","src":"7314:425:4","statements":[{"assignments":[1116],"declarations":[{"constant":false,"id":1116,"mutability":"mutable","name":"hashedName","nameLocation":"7559:10:4","nodeType":"VariableDeclaration","scope":1132,"src":"7551:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1115,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7551:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1119,"initialValue":{"expression":{"id":1117,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"7572:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1118,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7574:11:4","memberName":"_hashedName","nodeType":"MemberAccess","referencedDeclaration":866,"src":"7572:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7551:34:4"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1120,"name":"hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"7603:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7617:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7603:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1130,"nodeType":"Block","src":"7676:53:4","statements":[{"expression":{"arguments":[{"hexValue":"","id":1127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7711:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1126,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7701:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7701:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1088,"id":1129,"nodeType":"Return","src":"7694:20:4"}]},"id":1131,"nodeType":"IfStatement","src":"7599:130:4","trueBody":{"id":1125,"nodeType":"Block","src":"7620:50:4","statements":[{"expression":{"id":1123,"name":"hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"7645:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1088,"id":1124,"nodeType":"Return","src":"7638:17:4"}]}}]},"id":1133,"nodeType":"IfStatement","src":"7226:513:4","trueBody":{"id":1114,"nodeType":"Block","src":"7254:54:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":1110,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"7291:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7285:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1108,"name":"bytes","nodeType":"ElementaryTypeName","src":"7285:5:4","typeDescriptions":{}}},"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7285:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1107,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7275:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7275:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1088,"id":1113,"nodeType":"Return","src":"7268:29:4"}]}}]},"documentation":{"id":1084,"nodeType":"StructuredDocumentation","src":"6849:204:4","text":" @dev The hash of the name parameter for the EIP712 domain.\n NOTE: In previous versions this function was virtual. In this version you should override `_EIP712Name` instead."},"id":1135,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712NameHash","nameLocation":"7067:15:4","nodeType":"FunctionDefinition","parameters":{"id":1085,"nodeType":"ParameterList","parameters":[],"src":"7082:2:4"},"returnParameters":{"id":1088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1135,"src":"7108:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1086,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7108:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7107:9:4"},"scope":1188,"src":"7058:687:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1186,"nodeType":"Block","src":"8028:661:4","statements":[{"assignments":[1143],"declarations":[{"constant":false,"id":1143,"mutability":"mutable","name":"$","nameLocation":"8060:1:4","nodeType":"VariableDeclaration","scope":1186,"src":"8038:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1142,"nodeType":"UserDefinedTypeName","pathNode":{"id":1141,"name":"EIP712Storage","nameLocations":["8038:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"8038:13:4"},"referencedDeclaration":874,"src":"8038:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1146,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1144,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"8064:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8064:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8038:45:4"},{"assignments":[1148],"declarations":[{"constant":false,"id":1148,"mutability":"mutable","name":"version","nameLocation":"8107:7:4","nodeType":"VariableDeclaration","scope":1186,"src":"8093:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1147,"name":"string","nodeType":"ElementaryTypeName","src":"8093:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1151,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1149,"name":"_EIP712Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1083,"src":"8117:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8117:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"8093:40:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1154,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"8153:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8147:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1152,"name":"bytes","nodeType":"ElementaryTypeName","src":"8147:5:4","typeDescriptions":{}}},"id":1155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8147:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8162:6:4","memberName":"length","nodeType":"MemberAccess","src":"8147:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8171:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8147:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1184,"nodeType":"Block","src":"8237:446:4","statements":[{"assignments":[1168],"declarations":[{"constant":false,"id":1168,"mutability":"mutable","name":"hashedVersion","nameLocation":"8491:13:4","nodeType":"VariableDeclaration","scope":1184,"src":"8483:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1167,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8483:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1171,"initialValue":{"expression":{"id":1169,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"8507:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8509:14:4","memberName":"_hashedVersion","nodeType":"MemberAccess","referencedDeclaration":869,"src":"8507:16:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8483:40:4"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1172,"name":"hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"8541:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8558:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8541:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1182,"nodeType":"Block","src":"8620:53:4","statements":[{"expression":{"arguments":[{"hexValue":"","id":1179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8655:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1178,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8645:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8645:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1140,"id":1181,"nodeType":"Return","src":"8638:20:4"}]},"id":1183,"nodeType":"IfStatement","src":"8537:136:4","trueBody":{"id":1177,"nodeType":"Block","src":"8561:53:4","statements":[{"expression":{"id":1175,"name":"hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"8586:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1140,"id":1176,"nodeType":"Return","src":"8579:20:4"}]}}]},"id":1185,"nodeType":"IfStatement","src":"8143:540:4","trueBody":{"id":1166,"nodeType":"Block","src":"8174:57:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":1162,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"8211:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8205:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1160,"name":"bytes","nodeType":"ElementaryTypeName","src":"8205:5:4","typeDescriptions":{}}},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8205:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1159,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8195:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8195:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1140,"id":1165,"nodeType":"Return","src":"8188:32:4"}]}}]},"documentation":{"id":1136,"nodeType":"StructuredDocumentation","src":"7751:210:4","text":" @dev The hash of the version parameter for the EIP712 domain.\n NOTE: In previous versions this function was virtual. In this version you should override `_EIP712Version` instead."},"id":1187,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712VersionHash","nameLocation":"7975:18:4","nodeType":"FunctionDefinition","parameters":{"id":1137,"nodeType":"ParameterList","parameters":[],"src":"7993:2:4"},"returnParameters":{"id":1140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1187,"src":"8019:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8019:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8018:9:4"},"scope":1188,"src":"7966:723:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1189,"src":"1959:6732:4","usedErrors":[379,382],"usedEvents":[387,1316]}],"src":"113:8579:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[1228],"IERC165":[2363],"Initializable":[616]},"id":1229,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1190,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:5"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":1192,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1229,"sourceUnit":2364,"src":"140:80:5","symbolAliases":[{"foreign":{"id":1191,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"148:7:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":1194,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1229,"sourceUnit":617,"src":"221:66:5","symbolAliases":[{"foreign":{"id":1193,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"229:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1196,"name":"Initializable","nameLocations":["807:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"807:13:5"},"id":1197,"nodeType":"InheritanceSpecifier","src":"807:13:5"},{"baseName":{"id":1198,"name":"IERC165","nameLocations":["822:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":2363,"src":"822:7:5"},"id":1199,"nodeType":"InheritanceSpecifier","src":"822:7:5"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1195,"nodeType":"StructuredDocumentation","src":"289:478:5","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,"id":1228,"linearizedBaseContracts":[1228,2363,616],"name":"ERC165Upgradeable","nameLocation":"786:17:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":1204,"nodeType":"Block","src":"887:7:5","statements":[]},"id":1205,"implemented":true,"kind":"function","modifiers":[{"id":1202,"kind":"modifierInvocation","modifierName":{"id":1201,"name":"onlyInitializing","nameLocations":["870:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"870:16:5"},"nodeType":"ModifierInvocation","src":"870:16:5"}],"name":"__ERC165_init","nameLocation":"845:13:5","nodeType":"FunctionDefinition","parameters":{"id":1200,"nodeType":"ParameterList","parameters":[],"src":"858:2:5"},"returnParameters":{"id":1203,"nodeType":"ParameterList","parameters":[],"src":"887:0:5"},"scope":1228,"src":"836:58:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1210,"nodeType":"Block","src":"961:7:5","statements":[]},"id":1211,"implemented":true,"kind":"function","modifiers":[{"id":1208,"kind":"modifierInvocation","modifierName":{"id":1207,"name":"onlyInitializing","nameLocations":["944:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"944:16:5"},"nodeType":"ModifierInvocation","src":"944:16:5"}],"name":"__ERC165_init_unchained","nameLocation":"909:23:5","nodeType":"FunctionDefinition","parameters":{"id":1206,"nodeType":"ParameterList","parameters":[],"src":"932:2:5"},"returnParameters":{"id":1209,"nodeType":"ParameterList","parameters":[],"src":"961:0:5"},"scope":1228,"src":"900:68:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2362],"body":{"id":1226,"nodeType":"Block","src":"1116:64:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1219,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1214,"src":"1133:11:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1221,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2363,"src":"1153:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2363_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2363_$","typeString":"type(contract IERC165)"}],"id":1220,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1148:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2363","typeString":"type(contract IERC165)"}},"id":1223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1162:11:5","memberName":"interfaceId","nodeType":"MemberAccess","src":"1148:25:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1133:40:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1218,"id":1225,"nodeType":"Return","src":"1126:47:5"}]},"documentation":{"id":1212,"nodeType":"StructuredDocumentation","src":"973:56:5","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":1227,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1043:17:5","nodeType":"FunctionDefinition","parameters":{"id":1215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1214,"mutability":"mutable","name":"interfaceId","nameLocation":"1068:11:5","nodeType":"VariableDeclaration","scope":1227,"src":"1061:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1213,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1061:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1060:20:5"},"returnParameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1227,"src":"1110:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1216,"name":"bool","nodeType":"ElementaryTypeName","src":"1110:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1109:6:5"},"scope":1228,"src":"1034:146:5","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":1229,"src":"768:414:5","usedErrors":[379,382],"usedEvents":[387]}],"src":"114:1069:5"},"id":5},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[1311]},"id":1312,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1230,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":1231,"nodeType":"StructuredDocumentation","src":"135:89:6","text":" @dev External interface of AccessControl declared to support ERC165 detection."},"fullyImplemented":false,"id":1311,"linearizedBaseContracts":[1311],"name":"IAccessControl","nameLocation":"235:14:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1232,"nodeType":"StructuredDocumentation","src":"256:56:6","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","id":1238,"name":"AccessControlUnauthorizedAccount","nameLocation":"323:32:6","nodeType":"ErrorDefinition","parameters":{"id":1237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1234,"mutability":"mutable","name":"account","nameLocation":"364:7:6","nodeType":"VariableDeclaration","scope":1238,"src":"356:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1233,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1236,"mutability":"mutable","name":"neededRole","nameLocation":"381:10:6","nodeType":"VariableDeclaration","scope":1238,"src":"373:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1235,"name":"bytes32","nodeType":"ElementaryTypeName","src":"373:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"355:37:6"},"src":"317:76:6"},{"documentation":{"id":1239,"nodeType":"StructuredDocumentation","src":"399:148:6","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","id":1241,"name":"AccessControlBadConfirmation","nameLocation":"558:28:6","nodeType":"ErrorDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[],"src":"586:2:6"},"src":"552:37:6"},{"anonymous":false,"documentation":{"id":1242,"nodeType":"StructuredDocumentation","src":"595:254:6","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":1250,"name":"RoleAdminChanged","nameLocation":"860:16:6","nodeType":"EventDefinition","parameters":{"id":1249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"893:4:6","nodeType":"VariableDeclaration","scope":1250,"src":"877:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"877:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1246,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"915:17:6","nodeType":"VariableDeclaration","scope":1250,"src":"899:33:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1245,"name":"bytes32","nodeType":"ElementaryTypeName","src":"899:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1248,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"950:12:6","nodeType":"VariableDeclaration","scope":1250,"src":"934:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1247,"name":"bytes32","nodeType":"ElementaryTypeName","src":"934:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"876:87:6"},"src":"854:110:6"},{"anonymous":false,"documentation":{"id":1251,"nodeType":"StructuredDocumentation","src":"970:212:6","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":1259,"name":"RoleGranted","nameLocation":"1193:11:6","nodeType":"EventDefinition","parameters":{"id":1258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1253,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1221:4:6","nodeType":"VariableDeclaration","scope":1259,"src":"1205:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1252,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1205:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1255,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1243:7:6","nodeType":"VariableDeclaration","scope":1259,"src":"1227:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1254,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1257,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1268:6:6","nodeType":"VariableDeclaration","scope":1259,"src":"1252:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1256,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1204:71:6"},"src":"1187:89:6"},{"anonymous":false,"documentation":{"id":1260,"nodeType":"StructuredDocumentation","src":"1282:275:6","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":1268,"name":"RoleRevoked","nameLocation":"1568:11:6","nodeType":"EventDefinition","parameters":{"id":1267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1262,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1596:4:6","nodeType":"VariableDeclaration","scope":1268,"src":"1580:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1580:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1264,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1618:7:6","nodeType":"VariableDeclaration","scope":1268,"src":"1602:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1263,"name":"address","nodeType":"ElementaryTypeName","src":"1602:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1266,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1643:6:6","nodeType":"VariableDeclaration","scope":1268,"src":"1627:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1265,"name":"address","nodeType":"ElementaryTypeName","src":"1627:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1579:71:6"},"src":"1562:89:6"},{"documentation":{"id":1269,"nodeType":"StructuredDocumentation","src":"1657:76:6","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":1278,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1747:7:6","nodeType":"FunctionDefinition","parameters":{"id":1274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1271,"mutability":"mutable","name":"role","nameLocation":"1763:4:6","nodeType":"VariableDeclaration","scope":1278,"src":"1755:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1755:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1273,"mutability":"mutable","name":"account","nameLocation":"1777:7:6","nodeType":"VariableDeclaration","scope":1278,"src":"1769:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1272,"name":"address","nodeType":"ElementaryTypeName","src":"1769:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1754:31:6"},"returnParameters":{"id":1277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1278,"src":"1809:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1275,"name":"bool","nodeType":"ElementaryTypeName","src":"1809:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1808:6:6"},"scope":1311,"src":"1738:77:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1279,"nodeType":"StructuredDocumentation","src":"1821:184:6","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":1286,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2019:12:6","nodeType":"FunctionDefinition","parameters":{"id":1282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1281,"mutability":"mutable","name":"role","nameLocation":"2040:4:6","nodeType":"VariableDeclaration","scope":1286,"src":"2032:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1280,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2032:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2031:14:6"},"returnParameters":{"id":1285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1286,"src":"2069:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1283,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2069:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2068:9:6"},"scope":1311,"src":"2010:68:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1287,"nodeType":"StructuredDocumentation","src":"2084:239:6","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":1294,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2337:9:6","nodeType":"FunctionDefinition","parameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1289,"mutability":"mutable","name":"role","nameLocation":"2355:4:6","nodeType":"VariableDeclaration","scope":1294,"src":"2347:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2347:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"account","nameLocation":"2369:7:6","nodeType":"VariableDeclaration","scope":1294,"src":"2361:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1290,"name":"address","nodeType":"ElementaryTypeName","src":"2361:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2346:31:6"},"returnParameters":{"id":1293,"nodeType":"ParameterList","parameters":[],"src":"2386:0:6"},"scope":1311,"src":"2328:59:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"2393:223:6","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":1302,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2630:10:6","nodeType":"FunctionDefinition","parameters":{"id":1300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"role","nameLocation":"2649:4:6","nodeType":"VariableDeclaration","scope":1302,"src":"2641:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2641:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1299,"mutability":"mutable","name":"account","nameLocation":"2663:7:6","nodeType":"VariableDeclaration","scope":1302,"src":"2655:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1298,"name":"address","nodeType":"ElementaryTypeName","src":"2655:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2640:31:6"},"returnParameters":{"id":1301,"nodeType":"ParameterList","parameters":[],"src":"2680:0:6"},"scope":1311,"src":"2621:60:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1303,"nodeType":"StructuredDocumentation","src":"2687:491:6","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","id":1310,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3192:12:6","nodeType":"FunctionDefinition","parameters":{"id":1308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1305,"mutability":"mutable","name":"role","nameLocation":"3213:4:6","nodeType":"VariableDeclaration","scope":1310,"src":"3205:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3205:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1307,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3227:18:6","nodeType":"VariableDeclaration","scope":1310,"src":"3219:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1306,"name":"address","nodeType":"ElementaryTypeName","src":"3219:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3204:42:6"},"returnParameters":{"id":1309,"nodeType":"ParameterList","parameters":[],"src":"3255:0:6"},"scope":1311,"src":"3183:73:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1312,"src":"225:3033:6","usedErrors":[1238,1241],"usedEvents":[1250,1259,1268]}],"src":"109:3150:6"},"id":6},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","exportedSymbols":{"IERC5267":[1336]},"id":1337,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1313,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC5267","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1336,"linearizedBaseContracts":[1336],"name":"IERC5267","nameLocation":"143:8:7","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1314,"nodeType":"StructuredDocumentation","src":"158:84:7","text":" @dev MAY be emitted to signal that the domain could have changed."},"eventSelector":"0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31","id":1316,"name":"EIP712DomainChanged","nameLocation":"253:19:7","nodeType":"EventDefinition","parameters":{"id":1315,"nodeType":"ParameterList","parameters":[],"src":"272:2:7"},"src":"247:28:7"},{"documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"281:140:7","text":" @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n signature."},"functionSelector":"84b0196e","id":1335,"implemented":false,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"435:12:7","nodeType":"FunctionDefinition","parameters":{"id":1318,"nodeType":"ParameterList","parameters":[],"src":"447:2:7"},"returnParameters":{"id":1334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1320,"mutability":"mutable","name":"fields","nameLocation":"517:6:7","nodeType":"VariableDeclaration","scope":1335,"src":"510:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1319,"name":"bytes1","nodeType":"ElementaryTypeName","src":"510:6:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":1322,"mutability":"mutable","name":"name","nameLocation":"551:4:7","nodeType":"VariableDeclaration","scope":1335,"src":"537:18:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1321,"name":"string","nodeType":"ElementaryTypeName","src":"537:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1324,"mutability":"mutable","name":"version","nameLocation":"583:7:7","nodeType":"VariableDeclaration","scope":1335,"src":"569:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1323,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1326,"mutability":"mutable","name":"chainId","nameLocation":"612:7:7","nodeType":"VariableDeclaration","scope":1335,"src":"604:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1325,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1328,"mutability":"mutable","name":"verifyingContract","nameLocation":"641:17:7","nodeType":"VariableDeclaration","scope":1335,"src":"633:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1327,"name":"address","nodeType":"ElementaryTypeName","src":"633:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1330,"mutability":"mutable","name":"salt","nameLocation":"680:4:7","nodeType":"VariableDeclaration","scope":1335,"src":"672:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1329,"name":"bytes32","nodeType":"ElementaryTypeName","src":"672:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1333,"mutability":"mutable","name":"extensions","nameLocation":"715:10:7","nodeType":"VariableDeclaration","scope":1335,"src":"698:27:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1332,"nodeType":"ArrayTypeName","src":"698:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"496:239:7"},"scope":1336,"src":"426:310:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1337,"src":"133:605:7","usedErrors":[],"usedEvents":[1316]}],"src":"107:632:7"},"id":7},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[1346]},"id":1347,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1338,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1339,"nodeType":"StructuredDocumentation","src":"139:203:8","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":1346,"linearizedBaseContracts":[1346],"name":"IERC1822Proxiable","nameLocation":"353:17:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1340,"nodeType":"StructuredDocumentation","src":"377:438:8","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":1345,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"829:13:8","nodeType":"FunctionDefinition","parameters":{"id":1341,"nodeType":"ParameterList","parameters":[],"src":"842:2:8"},"returnParameters":{"id":1344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1345,"src":"868:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"868:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"867:9:8"},"scope":1346,"src":"820:57:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1347,"src":"343:536:8","usedErrors":[],"usedEvents":[]}],"src":"113:767:8"},"id":8},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[1912],"ERC1967Utils":[1649],"IBeacon":[1659],"StorageSlot":[2022]},"id":1650,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1348,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:9"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":1350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1650,"sourceUnit":1660,"src":"140:46:9","symbolAliases":[{"foreign":{"id":1349,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"148:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1650,"sourceUnit":1913,"src":"187:48:9","symbolAliases":[{"foreign":{"id":1351,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"195:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":1354,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1650,"sourceUnit":2023,"src":"236:56:9","symbolAliases":[{"foreign":{"id":1353,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"244:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":1355,"nodeType":"StructuredDocumentation","src":"294:154:9","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots."},"fullyImplemented":true,"id":1649,"linearizedBaseContracts":[1649],"name":"ERC1967Utils","nameLocation":"457:12:9","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1356,"nodeType":"StructuredDocumentation","src":"660:68:9","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1360,"name":"Upgraded","nameLocation":"739:8:9","nodeType":"EventDefinition","parameters":{"id":1359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1358,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"764:14:9","nodeType":"VariableDeclaration","scope":1360,"src":"748:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1357,"name":"address","nodeType":"ElementaryTypeName","src":"748:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"747:32:9"},"src":"733:47:9"},{"anonymous":false,"documentation":{"id":1361,"nodeType":"StructuredDocumentation","src":"786:67:9","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":1367,"name":"AdminChanged","nameLocation":"864:12:9","nodeType":"EventDefinition","parameters":{"id":1366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1363,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"885:13:9","nodeType":"VariableDeclaration","scope":1367,"src":"877:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1362,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1365,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"908:8:9","nodeType":"VariableDeclaration","scope":1367,"src":"900:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1364,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"876:41:9"},"src":"858:60:9"},{"anonymous":false,"documentation":{"id":1368,"nodeType":"StructuredDocumentation","src":"924:59:9","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":1372,"name":"BeaconUpgraded","nameLocation":"994:14:9","nodeType":"EventDefinition","parameters":{"id":1371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1370,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"1025:6:9","nodeType":"VariableDeclaration","scope":1372,"src":"1009:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1369,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1008:24:9"},"src":"988:45:9"},{"constant":true,"documentation":{"id":1373,"nodeType":"StructuredDocumentation","src":"1039:170:9","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"id":1376,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"1305:19:9","nodeType":"VariableDeclaration","scope":1649,"src":"1279:114:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1279:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1327:66:9","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":1377,"nodeType":"StructuredDocumentation","src":"1400:69:9","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":1381,"name":"ERC1967InvalidImplementation","nameLocation":"1480:28:9","nodeType":"ErrorDefinition","parameters":{"id":1380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1379,"mutability":"mutable","name":"implementation","nameLocation":"1517:14:9","nodeType":"VariableDeclaration","scope":1381,"src":"1509:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1378,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1508:24:9"},"src":"1474:59:9"},{"documentation":{"id":1382,"nodeType":"StructuredDocumentation","src":"1539:60:9","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":1386,"name":"ERC1967InvalidAdmin","nameLocation":"1610:19:9","nodeType":"ErrorDefinition","parameters":{"id":1385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1384,"mutability":"mutable","name":"admin","nameLocation":"1638:5:9","nodeType":"VariableDeclaration","scope":1386,"src":"1630:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1383,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1629:15:9"},"src":"1604:41:9"},{"documentation":{"id":1387,"nodeType":"StructuredDocumentation","src":"1651:61:9","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":1391,"name":"ERC1967InvalidBeacon","nameLocation":"1723:20:9","nodeType":"ErrorDefinition","parameters":{"id":1390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1389,"mutability":"mutable","name":"beacon","nameLocation":"1752:6:9","nodeType":"VariableDeclaration","scope":1391,"src":"1744:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1388,"name":"address","nodeType":"ElementaryTypeName","src":"1744:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1743:16:9"},"src":"1717:43:9"},{"documentation":{"id":1392,"nodeType":"StructuredDocumentation","src":"1766:82:9","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":1394,"name":"ERC1967NonPayable","nameLocation":"1859:17:9","nodeType":"ErrorDefinition","parameters":{"id":1393,"nodeType":"ParameterList","parameters":[],"src":"1876:2:9"},"src":"1853:26:9"},{"body":{"id":1406,"nodeType":"Block","src":"2018:77:9","statements":[{"expression":{"expression":{"arguments":[{"id":1402,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"2062:19:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1400,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"2035:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2047:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"2035:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2035:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2083:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"2035:53:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1399,"id":1405,"nodeType":"Return","src":"2028:60:9"}]},"documentation":{"id":1395,"nodeType":"StructuredDocumentation","src":"1885:67:9","text":" @dev Returns the current implementation address."},"id":1407,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1966:17:9","nodeType":"FunctionDefinition","parameters":{"id":1396,"nodeType":"ParameterList","parameters":[],"src":"1983:2:9"},"returnParameters":{"id":1399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1407,"src":"2009:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1397,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2008:9:9"},"scope":1649,"src":"1957:138:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1433,"nodeType":"Block","src":"2249:218:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1413,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"2263:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2281:4:9","memberName":"code","nodeType":"MemberAccess","src":"2263:22:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2286:6:9","memberName":"length","nodeType":"MemberAccess","src":"2263:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2263:34:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1423,"nodeType":"IfStatement","src":"2259:119:9","trueBody":{"id":1422,"nodeType":"Block","src":"2299:79:9","statements":[{"errorCall":{"arguments":[{"id":1419,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"2349:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1418,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"2320:28:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1421,"nodeType":"RevertStatement","src":"2313:54:9"}]}},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1427,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"2414:19:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1424,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"2387:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2399:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"2387:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2387:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2435:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"2387:53:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1430,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"2443:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2387:73:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1432,"nodeType":"ExpressionStatement","src":"2387:73:9"}]},"documentation":{"id":1408,"nodeType":"StructuredDocumentation","src":"2101:80:9","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":1434,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"2195:18:9","nodeType":"FunctionDefinition","parameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"newImplementation","nameLocation":"2222:17:9","nodeType":"VariableDeclaration","scope":1434,"src":"2214:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1409,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2213:27:9"},"returnParameters":{"id":1412,"nodeType":"ParameterList","parameters":[],"src":"2249:0:9"},"scope":1649,"src":"2186:281:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1467,"nodeType":"Block","src":"2860:254:9","statements":[{"expression":{"arguments":[{"id":1443,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"2889:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1442,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"2870:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2870:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1445,"nodeType":"ExpressionStatement","src":"2870:37:9"},{"eventCall":{"arguments":[{"id":1447,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"2931:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1446,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1360,"src":"2922:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2922:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1449,"nodeType":"EmitStatement","src":"2917:32:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1450,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1439,"src":"2964:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2969:6:9","memberName":"length","nodeType":"MemberAccess","src":"2964:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2978:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2964:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1465,"nodeType":"Block","src":"3065:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1462,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"3079:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3079:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1464,"nodeType":"ExpressionStatement","src":"3079:18:9"}]},"id":1466,"nodeType":"IfStatement","src":"2960:148:9","trueBody":{"id":1461,"nodeType":"Block","src":"2981:78:9","statements":[{"expression":{"arguments":[{"id":1457,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"3024:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1458,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1439,"src":"3043:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1454,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"2995:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1912_$","typeString":"type(library Address)"}},"id":1456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3003:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"2995:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1460,"nodeType":"ExpressionStatement","src":"2995:53:9"}]}}]},"documentation":{"id":1435,"nodeType":"StructuredDocumentation","src":"2473:301:9","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"id":1468,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2788:16:9","nodeType":"FunctionDefinition","parameters":{"id":1440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1437,"mutability":"mutable","name":"newImplementation","nameLocation":"2813:17:9","nodeType":"VariableDeclaration","scope":1468,"src":"2805:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1436,"name":"address","nodeType":"ElementaryTypeName","src":"2805:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1439,"mutability":"mutable","name":"data","nameLocation":"2845:4:9","nodeType":"VariableDeclaration","scope":1468,"src":"2832:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1438,"name":"bytes","nodeType":"ElementaryTypeName","src":"2832:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2804:46:9"},"returnParameters":{"id":1441,"nodeType":"ParameterList","parameters":[],"src":"2860:0:9"},"scope":1649,"src":"2779:335:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1469,"nodeType":"StructuredDocumentation","src":"3120:145:9","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"id":1472,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"3361:10:9","nodeType":"VariableDeclaration","scope":1649,"src":"3335:105:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1470,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3335:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":1471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3374:66:9","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":1484,"nodeType":"Block","src":"3844:68:9","statements":[{"expression":{"expression":{"arguments":[{"id":1480,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"3888:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1478,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"3861:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3873:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"3861:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3900:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"3861:44:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1477,"id":1483,"nodeType":"Return","src":"3854:51:9"}]},"documentation":{"id":1473,"nodeType":"StructuredDocumentation","src":"3447:340:9","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":1485,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3801:8:9","nodeType":"FunctionDefinition","parameters":{"id":1474,"nodeType":"ParameterList","parameters":[],"src":"3809:2:9"},"returnParameters":{"id":1477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"3835:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1475,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3834:9:9"},"scope":1649,"src":"3792:120:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1515,"nodeType":"Block","src":"4039:172:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1491,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"4053:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4073:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4065:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1492,"name":"address","nodeType":"ElementaryTypeName","src":"4065:7:9","typeDescriptions":{}}},"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4053:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1505,"nodeType":"IfStatement","src":"4049:91:9","trueBody":{"id":1504,"nodeType":"Block","src":"4077:63:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4126:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4118:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"4118:7:9","typeDescriptions":{}}},"id":1501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"4098:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4098:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1503,"nodeType":"RevertStatement","src":"4091:38:9"}]}},{"expression":{"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1509,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"4176:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1506,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"4149:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4161:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"4149:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4149:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1511,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4188:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"4149:44:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1512,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"4196:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4149:55:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1514,"nodeType":"ExpressionStatement","src":"4149:55:9"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"3918:71:9","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":1516,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4003:9:9","nodeType":"FunctionDefinition","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"newAdmin","nameLocation":"4021:8:9","nodeType":"VariableDeclaration","scope":1516,"src":"4013:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"4013:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4012:18:9"},"returnParameters":{"id":1490,"nodeType":"ParameterList","parameters":[],"src":"4039:0:9"},"scope":1649,"src":"3994:217:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1532,"nodeType":"Block","src":"4379:85:9","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1523,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"4407:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4407:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1525,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1519,"src":"4419:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1522,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1367,"src":"4394:12:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4394:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1527,"nodeType":"EmitStatement","src":"4389:39:9"},{"expression":{"arguments":[{"id":1529,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1519,"src":"4448:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1528,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"4438:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1531,"nodeType":"ExpressionStatement","src":"4438:19:9"}]},"documentation":{"id":1517,"nodeType":"StructuredDocumentation","src":"4217:109:9","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":1533,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"4340:11:9","nodeType":"FunctionDefinition","parameters":{"id":1520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1519,"mutability":"mutable","name":"newAdmin","nameLocation":"4360:8:9","nodeType":"VariableDeclaration","scope":1533,"src":"4352:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1518,"name":"address","nodeType":"ElementaryTypeName","src":"4352:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4351:18:9"},"returnParameters":{"id":1521,"nodeType":"ParameterList","parameters":[],"src":"4379:0:9"},"scope":1649,"src":"4331:133:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1534,"nodeType":"StructuredDocumentation","src":"4470:201:9","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"id":1537,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4767:11:9","nodeType":"VariableDeclaration","scope":1649,"src":"4741:106:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1535,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4741:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":1536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4781:66:9","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":1549,"nodeType":"Block","src":"4963:69:9","statements":[{"expression":{"expression":{"arguments":[{"id":1545,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"5007:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1543,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"4980:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4992:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"4980:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5020:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"4980:45:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1542,"id":1548,"nodeType":"Return","src":"4973:52:9"}]},"documentation":{"id":1538,"nodeType":"StructuredDocumentation","src":"4854:51:9","text":" @dev Returns the current beacon."},"id":1550,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4919:9:9","nodeType":"FunctionDefinition","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[],"src":"4928:2:9"},"returnParameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1550,"src":"4954:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1540,"name":"address","nodeType":"ElementaryTypeName","src":"4954:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4953:9:9"},"scope":1649,"src":"4910:122:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1595,"nodeType":"Block","src":"5161:390:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1556,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"5175:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5185:4:9","memberName":"code","nodeType":"MemberAccess","src":"5175:14:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5190:6:9","memberName":"length","nodeType":"MemberAccess","src":"5175:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5200:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1566,"nodeType":"IfStatement","src":"5171:95:9","trueBody":{"id":1565,"nodeType":"Block","src":"5203:63:9","statements":[{"errorCall":{"arguments":[{"id":1562,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"5245:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1561,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1391,"src":"5224:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5224:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1564,"nodeType":"RevertStatement","src":"5217:38:9"}]}},{"expression":{"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1570,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"5303:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1567,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"5276:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5288:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"5276:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5276:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5316:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"5276:45:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1573,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"5324:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5276:57:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1575,"nodeType":"ExpressionStatement","src":"5276:57:9"},{"assignments":[1577],"declarations":[{"constant":false,"id":1577,"mutability":"mutable","name":"beaconImplementation","nameLocation":"5352:20:9","nodeType":"VariableDeclaration","scope":1595,"src":"5344:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"5344:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1583,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1579,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"5383:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1578,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"5375:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1659_$","typeString":"type(contract IBeacon)"}},"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1659","typeString":"contract IBeacon"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5394:14:9","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1658,"src":"5375:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5344:66:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1584,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"5424:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5445:4:9","memberName":"code","nodeType":"MemberAccess","src":"5424:25:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5450:6:9","memberName":"length","nodeType":"MemberAccess","src":"5424:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5460:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5424:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1594,"nodeType":"IfStatement","src":"5420:125:9","trueBody":{"id":1593,"nodeType":"Block","src":"5463:82:9","statements":[{"errorCall":{"arguments":[{"id":1590,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"5513:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1589,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"5484:28:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5484:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1592,"nodeType":"RevertStatement","src":"5477:57:9"}]}}]},"documentation":{"id":1551,"nodeType":"StructuredDocumentation","src":"5038:71:9","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":1596,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5123:10:9","nodeType":"FunctionDefinition","parameters":{"id":1554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1553,"mutability":"mutable","name":"newBeacon","nameLocation":"5142:9:9","nodeType":"VariableDeclaration","scope":1596,"src":"5134:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1552,"name":"address","nodeType":"ElementaryTypeName","src":"5134:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5133:19:9"},"returnParameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"5161:0:9"},"scope":1649,"src":"5114:437:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1633,"nodeType":"Block","src":"6155:254:9","statements":[{"expression":{"arguments":[{"id":1605,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"6176:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1604,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1596,"src":"6165:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1607,"nodeType":"ExpressionStatement","src":"6165:21:9"},{"eventCall":{"arguments":[{"id":1609,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"6216:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1608,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1372,"src":"6201:14:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6201:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1611,"nodeType":"EmitStatement","src":"6196:30:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1612,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"6241:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6246:6:9","memberName":"length","nodeType":"MemberAccess","src":"6241:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6255:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6241:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1631,"nodeType":"Block","src":"6360:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1628,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"6374:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1630,"nodeType":"ExpressionStatement","src":"6374:18:9"}]},"id":1632,"nodeType":"IfStatement","src":"6237:166:9","trueBody":{"id":1627,"nodeType":"Block","src":"6258:96:9","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1620,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"6309:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1619,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"6301:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1659_$","typeString":"type(contract IBeacon)"}},"id":1621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1659","typeString":"contract IBeacon"}},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6320:14:9","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1658,"src":"6301:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1624,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"6338:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1616,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"6272:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1912_$","typeString":"type(library Address)"}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6280:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"6272:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6272:71:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1626,"nodeType":"ExpressionStatement","src":"6272:71:9"}]}}]},"documentation":{"id":1597,"nodeType":"StructuredDocumentation","src":"5557:514:9","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"id":1634,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"6085:22:9","nodeType":"FunctionDefinition","parameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1599,"mutability":"mutable","name":"newBeacon","nameLocation":"6116:9:9","nodeType":"VariableDeclaration","scope":1634,"src":"6108:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1598,"name":"address","nodeType":"ElementaryTypeName","src":"6108:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1601,"mutability":"mutable","name":"data","nameLocation":"6140:4:9","nodeType":"VariableDeclaration","scope":1634,"src":"6127:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1600,"name":"bytes","nodeType":"ElementaryTypeName","src":"6127:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6107:38:9"},"returnParameters":{"id":1603,"nodeType":"ParameterList","parameters":[],"src":"6155:0:9"},"scope":1649,"src":"6076:333:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1647,"nodeType":"Block","src":"6634:86:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1638,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6648:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6652:5:9","memberName":"value","nodeType":"MemberAccess","src":"6648:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6648:13:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1646,"nodeType":"IfStatement","src":"6644:70:9","trueBody":{"id":1645,"nodeType":"Block","src":"6663:51:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1642,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"6684:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6684:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1644,"nodeType":"RevertStatement","src":"6677:26:9"}]}}]},"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"6415:178:9","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"id":1648,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6607:16:9","nodeType":"FunctionDefinition","parameters":{"id":1636,"nodeType":"ParameterList","parameters":[],"src":"6623:2:9"},"returnParameters":{"id":1637,"nodeType":"ParameterList","parameters":[],"src":"6634:0:9"},"scope":1649,"src":"6598:122:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1650,"src":"449:6273:9","usedErrors":[1381,1386,1391,1394],"usedEvents":[1360,1367,1372]}],"src":"114:6609:9"},"id":9},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[1659]},"id":1660,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1651,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":1652,"nodeType":"StructuredDocumentation","src":"134:79:10","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":1659,"linearizedBaseContracts":[1659],"name":"IBeacon","nameLocation":"224:7:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"238:168:10","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","id":1658,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:10","nodeType":"FunctionDefinition","parameters":{"id":1654,"nodeType":"ParameterList","parameters":[],"src":"434:2:10"},"returnParameters":{"id":1657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1658,"src":"460:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1655,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:10"},"scope":1659,"src":"411:58:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1660,"src":"214:257:10","usedErrors":[],"usedEvents":[]}],"src":"108:364:10"},"id":10},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[1912]},"id":1913,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1661,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1662,"nodeType":"StructuredDocumentation","src":"127:67:11","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1912,"linearizedBaseContracts":[1912],"name":"Address","nameLocation":"203:7:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1663,"nodeType":"StructuredDocumentation","src":"217:94:11","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cd786059","id":1667,"name":"AddressInsufficientBalance","nameLocation":"322:26:11","nodeType":"ErrorDefinition","parameters":{"id":1666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1665,"mutability":"mutable","name":"account","nameLocation":"357:7:11","nodeType":"VariableDeclaration","scope":1667,"src":"349:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1664,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:17:11"},"src":"316:50:11"},{"documentation":{"id":1668,"nodeType":"StructuredDocumentation","src":"372:75:11","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":1672,"name":"AddressEmptyCode","nameLocation":"458:16:11","nodeType":"ErrorDefinition","parameters":{"id":1671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"mutability":"mutable","name":"target","nameLocation":"483:6:11","nodeType":"VariableDeclaration","scope":1672,"src":"475:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1669,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"474:16:11"},"src":"452:39:11"},{"documentation":{"id":1673,"nodeType":"StructuredDocumentation","src":"497:89:11","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"1425ea42","id":1675,"name":"FailedInnerCall","nameLocation":"597:15:11","nodeType":"ErrorDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[],"src":"612:2:11"},"src":"591:24:11"},{"body":{"id":1715,"nodeType":"Block","src":"1602:260:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1685,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1624:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}],"id":1684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1616:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1683,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:11","typeDescriptions":{}}},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1630:7:11","memberName":"balance","nodeType":"MemberAccess","src":"1616:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1688,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1640:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1616:30:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1698,"nodeType":"IfStatement","src":"1612:109:11","trueBody":{"id":1697,"nodeType":"Block","src":"1648:73:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1693,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1704:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}],"id":1692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1696:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1691,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:11","typeDescriptions":{}}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1690,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"1669:26:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1669:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1696,"nodeType":"RevertStatement","src":"1662:48:11"}]}},{"assignments":[1700,null],"declarations":[{"constant":false,"id":1700,"mutability":"mutable","name":"success","nameLocation":"1737:7:11","nodeType":"VariableDeclaration","scope":1715,"src":"1732:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1699,"name":"bool","nodeType":"ElementaryTypeName","src":"1732:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1707,"initialValue":{"arguments":[{"hexValue":"","id":1705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1780: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":{"id":1701,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1678,"src":"1750:9:11","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1760:4:11","memberName":"call","nodeType":"MemberAccess","src":"1750:14: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":1704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1772:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1750:29: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":1706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1750:33:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1731:52:11"},{"condition":{"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1797:8:11","subExpression":{"id":1708,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1700,"src":"1798:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1714,"nodeType":"IfStatement","src":"1793:63:11","trueBody":{"id":1713,"nodeType":"Block","src":"1807:49:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1710,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1828:15:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1712,"nodeType":"RevertStatement","src":"1821:24:11"}]}}]},"documentation":{"id":1676,"nodeType":"StructuredDocumentation","src":"621:905:11","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1716,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1540:9:11","nodeType":"FunctionDefinition","parameters":{"id":1681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1678,"mutability":"mutable","name":"recipient","nameLocation":"1566:9:11","nodeType":"VariableDeclaration","scope":1716,"src":"1550:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1677,"name":"address","nodeType":"ElementaryTypeName","src":"1550:15:11","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1680,"mutability":"mutable","name":"amount","nameLocation":"1585:6:11","nodeType":"VariableDeclaration","scope":1716,"src":"1577:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1679,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:43:11"},"returnParameters":{"id":1682,"nodeType":"ParameterList","parameters":[],"src":"1602:0:11"},"scope":1912,"src":"1531:331:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1732,"nodeType":"Block","src":"2794:62:11","statements":[{"expression":{"arguments":[{"id":1727,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"2833:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1728,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"2841:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2847:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1726,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"2811:21:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1725,"id":1731,"nodeType":"Return","src":"2804:45:11"}]},"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"1868:832:11","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."},"id":1733,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2714:12:11","nodeType":"FunctionDefinition","parameters":{"id":1722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"target","nameLocation":"2735:6:11","nodeType":"VariableDeclaration","scope":1733,"src":"2727:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1718,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1721,"mutability":"mutable","name":"data","nameLocation":"2756:4:11","nodeType":"VariableDeclaration","scope":1733,"src":"2743:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1720,"name":"bytes","nodeType":"ElementaryTypeName","src":"2743:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2726:35:11"},"returnParameters":{"id":1725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1733,"src":"2780:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1723,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2779:14:11"},"scope":1912,"src":"2705:151:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1778,"nodeType":"Block","src":"3293:279:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1747,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3315:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}],"id":1746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3307:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1745,"name":"address","nodeType":"ElementaryTypeName","src":"3307:7:11","typeDescriptions":{}}},"id":1748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3307:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3321:7:11","memberName":"balance","nodeType":"MemberAccess","src":"3307:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1750,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1740,"src":"3331:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3307:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1760,"nodeType":"IfStatement","src":"3303:108:11","trueBody":{"id":1759,"nodeType":"Block","src":"3338:73:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1755,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3394:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}],"id":1754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3386:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1753,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:11","typeDescriptions":{}}},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1752,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"3359:26:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1758,"nodeType":"RevertStatement","src":"3352:48:11"}]}},{"assignments":[1762,1764],"declarations":[{"constant":false,"id":1762,"mutability":"mutable","name":"success","nameLocation":"3426:7:11","nodeType":"VariableDeclaration","scope":1778,"src":"3421:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1761,"name":"bool","nodeType":"ElementaryTypeName","src":"3421:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1764,"mutability":"mutable","name":"returndata","nameLocation":"3448:10:11","nodeType":"VariableDeclaration","scope":1778,"src":"3435:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1763,"name":"bytes","nodeType":"ElementaryTypeName","src":"3435:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1771,"initialValue":{"arguments":[{"id":1769,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1738,"src":"3488:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1765,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3462:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3469:4:11","memberName":"call","nodeType":"MemberAccess","src":"3462:11: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":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1767,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1740,"src":"3481:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3462:25: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":1770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3420:73:11"},{"expression":{"arguments":[{"id":1773,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3537:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1774,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"3545:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1775,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"3554:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1772,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"3510:26:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3510:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1744,"id":1777,"nodeType":"Return","src":"3503:62:11"}]},"documentation":{"id":1734,"nodeType":"StructuredDocumentation","src":"2862:313:11","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."},"id":1779,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"3189:21:11","nodeType":"FunctionDefinition","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1736,"mutability":"mutable","name":"target","nameLocation":"3219:6:11","nodeType":"VariableDeclaration","scope":1779,"src":"3211:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1735,"name":"address","nodeType":"ElementaryTypeName","src":"3211:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1738,"mutability":"mutable","name":"data","nameLocation":"3240:4:11","nodeType":"VariableDeclaration","scope":1779,"src":"3227:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1737,"name":"bytes","nodeType":"ElementaryTypeName","src":"3227:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1740,"mutability":"mutable","name":"value","nameLocation":"3254:5:11","nodeType":"VariableDeclaration","scope":1779,"src":"3246:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1739,"name":"uint256","nodeType":"ElementaryTypeName","src":"3246:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3210:50:11"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1779,"src":"3279:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1742,"name":"bytes","nodeType":"ElementaryTypeName","src":"3279:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3278:14:11"},"scope":1912,"src":"3180:392:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1804,"nodeType":"Block","src":"3811:154:11","statements":[{"assignments":[1790,1792],"declarations":[{"constant":false,"id":1790,"mutability":"mutable","name":"success","nameLocation":"3827:7:11","nodeType":"VariableDeclaration","scope":1804,"src":"3822:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1789,"name":"bool","nodeType":"ElementaryTypeName","src":"3822:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1792,"mutability":"mutable","name":"returndata","nameLocation":"3849:10:11","nodeType":"VariableDeclaration","scope":1804,"src":"3836:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1791,"name":"bytes","nodeType":"ElementaryTypeName","src":"3836:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1797,"initialValue":{"arguments":[{"id":1795,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"3881:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1793,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"3863:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:10:11","memberName":"staticcall","nodeType":"MemberAccess","src":"3863:17:11","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3863:23:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3821:65:11"},{"expression":{"arguments":[{"id":1799,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"3930:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1800,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"3938:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1801,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"3947:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1798,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"3903:26:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3903:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1788,"id":1803,"nodeType":"Return","src":"3896:62:11"}]},"documentation":{"id":1780,"nodeType":"StructuredDocumentation","src":"3578:128:11","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":1805,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3720:18:11","nodeType":"FunctionDefinition","parameters":{"id":1785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1782,"mutability":"mutable","name":"target","nameLocation":"3747:6:11","nodeType":"VariableDeclaration","scope":1805,"src":"3739:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"3739:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1784,"mutability":"mutable","name":"data","nameLocation":"3768:4:11","nodeType":"VariableDeclaration","scope":1805,"src":"3755:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1783,"name":"bytes","nodeType":"ElementaryTypeName","src":"3755:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3738:35:11"},"returnParameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1805,"src":"3797:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1786,"name":"bytes","nodeType":"ElementaryTypeName","src":"3797:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3796:14:11"},"scope":1912,"src":"3711:254:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1830,"nodeType":"Block","src":"4203:156:11","statements":[{"assignments":[1816,1818],"declarations":[{"constant":false,"id":1816,"mutability":"mutable","name":"success","nameLocation":"4219:7:11","nodeType":"VariableDeclaration","scope":1830,"src":"4214:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1815,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1818,"mutability":"mutable","name":"returndata","nameLocation":"4241:10:11","nodeType":"VariableDeclaration","scope":1830,"src":"4228:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1817,"name":"bytes","nodeType":"ElementaryTypeName","src":"4228:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1823,"initialValue":{"arguments":[{"id":1821,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"4275:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1819,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"4255:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4262:12:11","memberName":"delegatecall","nodeType":"MemberAccess","src":"4255:19:11","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4255:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4213:67:11"},{"expression":{"arguments":[{"id":1825,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"4324:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1826,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"4332:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1827,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"4341:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1824,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"4297:26:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1814,"id":1829,"nodeType":"Return","src":"4290:62:11"}]},"documentation":{"id":1806,"nodeType":"StructuredDocumentation","src":"3971:130:11","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":1831,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"4115:20:11","nodeType":"FunctionDefinition","parameters":{"id":1811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1808,"mutability":"mutable","name":"target","nameLocation":"4144:6:11","nodeType":"VariableDeclaration","scope":1831,"src":"4136:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1807,"name":"address","nodeType":"ElementaryTypeName","src":"4136:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1810,"mutability":"mutable","name":"data","nameLocation":"4165:4:11","nodeType":"VariableDeclaration","scope":1831,"src":"4152:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1809,"name":"bytes","nodeType":"ElementaryTypeName","src":"4152:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4135:35:11"},"returnParameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1813,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1831,"src":"4189:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1812,"name":"bytes","nodeType":"ElementaryTypeName","src":"4189:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4188:14:11"},"scope":1912,"src":"4106:253:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1870,"nodeType":"Block","src":"4783:424:11","statements":[{"condition":{"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4797:8:11","subExpression":{"id":1843,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"4798:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1868,"nodeType":"Block","src":"4857:344:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1850,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"5045:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:6:11","memberName":"length","nodeType":"MemberAccess","src":"5045:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5045:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1854,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"5071:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5078:4:11","memberName":"code","nodeType":"MemberAccess","src":"5071:11:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5083:6:11","memberName":"length","nodeType":"MemberAccess","src":"5071:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5093:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5071:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5045:49:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1865,"nodeType":"IfStatement","src":"5041:119:11","trueBody":{"id":1864,"nodeType":"Block","src":"5096:64:11","statements":[{"errorCall":{"arguments":[{"id":1861,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"5138:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1860,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"5121:16:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1863,"nodeType":"RevertStatement","src":"5114:31:11"}]}},{"expression":{"id":1866,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"5180:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1842,"id":1867,"nodeType":"Return","src":"5173:17:11"}]},"id":1869,"nodeType":"IfStatement","src":"4793:408:11","trueBody":{"id":1849,"nodeType":"Block","src":"4807:44:11","statements":[{"expression":{"arguments":[{"id":1846,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"4829:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1845,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1911,"src":"4821:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4821:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1848,"nodeType":"ExpressionStatement","src":"4821:19:11"}]}}]},"documentation":{"id":1832,"nodeType":"StructuredDocumentation","src":"4365:255:11","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call."},"id":1871,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4634:26:11","nodeType":"FunctionDefinition","parameters":{"id":1839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1834,"mutability":"mutable","name":"target","nameLocation":"4678:6:11","nodeType":"VariableDeclaration","scope":1871,"src":"4670:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1833,"name":"address","nodeType":"ElementaryTypeName","src":"4670:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1836,"mutability":"mutable","name":"success","nameLocation":"4699:7:11","nodeType":"VariableDeclaration","scope":1871,"src":"4694:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1835,"name":"bool","nodeType":"ElementaryTypeName","src":"4694:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1838,"mutability":"mutable","name":"returndata","nameLocation":"4729:10:11","nodeType":"VariableDeclaration","scope":1871,"src":"4716:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1837,"name":"bytes","nodeType":"ElementaryTypeName","src":"4716:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4660:85:11"},"returnParameters":{"id":1842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1841,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1871,"src":"4769:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1840,"name":"bytes","nodeType":"ElementaryTypeName","src":"4769:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4768:14:11"},"scope":1912,"src":"4625:582:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1892,"nodeType":"Block","src":"5509:122:11","statements":[{"condition":{"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5523:8:11","subExpression":{"id":1881,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1874,"src":"5524:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1890,"nodeType":"Block","src":"5583:42:11","statements":[{"expression":{"id":1888,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"5604:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1880,"id":1889,"nodeType":"Return","src":"5597:17:11"}]},"id":1891,"nodeType":"IfStatement","src":"5519:106:11","trueBody":{"id":1887,"nodeType":"Block","src":"5533:44:11","statements":[{"expression":{"arguments":[{"id":1884,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"5555:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1883,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1911,"src":"5547:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5547:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1886,"nodeType":"ExpressionStatement","src":"5547:19:11"}]}}]},"documentation":{"id":1872,"nodeType":"StructuredDocumentation","src":"5213:189:11","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error."},"id":1893,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5416:16:11","nodeType":"FunctionDefinition","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1874,"mutability":"mutable","name":"success","nameLocation":"5438:7:11","nodeType":"VariableDeclaration","scope":1893,"src":"5433:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1873,"name":"bool","nodeType":"ElementaryTypeName","src":"5433:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1876,"mutability":"mutable","name":"returndata","nameLocation":"5460:10:11","nodeType":"VariableDeclaration","scope":1893,"src":"5447:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1875,"name":"bytes","nodeType":"ElementaryTypeName","src":"5447:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5432:39:11"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1893,"src":"5495:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1878,"name":"bytes","nodeType":"ElementaryTypeName","src":"5495:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5494:14:11"},"scope":1912,"src":"5407:224:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1910,"nodeType":"Block","src":"5798:461:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1899,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"5874:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5885:6:11","memberName":"length","nodeType":"MemberAccess","src":"5874:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5874:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1908,"nodeType":"Block","src":"6204:49:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1905,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"6225:15:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6225:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1907,"nodeType":"RevertStatement","src":"6218:24:11"}]},"id":1909,"nodeType":"IfStatement","src":"5870:383:11","trueBody":{"id":1904,"nodeType":"Block","src":"5897:301:11","statements":[{"AST":{"nodeType":"YulBlock","src":"6055:133:11","statements":[{"nodeType":"YulVariableDeclaration","src":"6073:40:11","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"6102:10:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6096:5:11"},"nodeType":"YulFunctionCall","src":"6096:17:11"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"6077:15:11","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6141:2:11","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"6145:10:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6137:3:11"},"nodeType":"YulFunctionCall","src":"6137:19:11"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"6158:15:11"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6130:6:11"},"nodeType":"YulFunctionCall","src":"6130:44:11"},"nodeType":"YulExpressionStatement","src":"6130:44:11"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1896,"isOffset":false,"isSlot":false,"src":"6102:10:11","valueSize":1},{"declaration":1896,"isOffset":false,"isSlot":false,"src":"6145:10:11","valueSize":1}],"id":1903,"nodeType":"InlineAssembly","src":"6046:142:11"}]}}]},"documentation":{"id":1894,"nodeType":"StructuredDocumentation","src":"5637:101:11","text":" @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}."},"id":1911,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5752:7:11","nodeType":"FunctionDefinition","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1896,"mutability":"mutable","name":"returndata","nameLocation":"5773:10:11","nodeType":"VariableDeclaration","scope":1911,"src":"5760:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1895,"name":"bytes","nodeType":"ElementaryTypeName","src":"5760:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5759:25:11"},"returnParameters":{"id":1898,"nodeType":"ParameterList","parameters":[],"src":"5798:0:11"},"scope":1912,"src":"5743:516:11","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1913,"src":"195:6066:11","usedErrors":[1667,1672,1675],"usedEvents":[]}],"src":"101:6161:11"},"id":11},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[2022]},"id":2023,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1914,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":1915,"nodeType":"StructuredDocumentation","src":"219:1025:12","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```"},"fullyImplemented":true,"id":2022,"linearizedBaseContracts":[2022],"name":"StorageSlot","nameLocation":"1253:11:12","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":1918,"members":[{"constant":false,"id":1917,"mutability":"mutable","name":"value","nameLocation":"1308:5:12","nodeType":"VariableDeclaration","scope":1918,"src":"1300:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1916,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1278:11:12","nodeType":"StructDefinition","scope":2022,"src":"1271:49:12","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":1921,"members":[{"constant":false,"id":1920,"mutability":"mutable","name":"value","nameLocation":"1360:5:12","nodeType":"VariableDeclaration","scope":1921,"src":"1355:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1919,"name":"bool","nodeType":"ElementaryTypeName","src":"1355:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1333:11:12","nodeType":"StructDefinition","scope":2022,"src":"1326:46:12","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":1924,"members":[{"constant":false,"id":1923,"mutability":"mutable","name":"value","nameLocation":"1415:5:12","nodeType":"VariableDeclaration","scope":1924,"src":"1407:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1922,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1407:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1385:11:12","nodeType":"StructDefinition","scope":2022,"src":"1378:49:12","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":1927,"members":[{"constant":false,"id":1926,"mutability":"mutable","name":"value","nameLocation":"1470:5:12","nodeType":"VariableDeclaration","scope":1927,"src":"1462:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1440:11:12","nodeType":"StructDefinition","scope":2022,"src":"1433:49:12","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":1930,"members":[{"constant":false,"id":1929,"mutability":"mutable","name":"value","nameLocation":"1523:5:12","nodeType":"VariableDeclaration","scope":1930,"src":"1516:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"1516:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1495:10:12","nodeType":"StructDefinition","scope":2022,"src":"1488:47:12","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":1933,"members":[{"constant":false,"id":1932,"mutability":"mutable","name":"value","nameLocation":"1574:5:12","nodeType":"VariableDeclaration","scope":1933,"src":"1568:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1931,"name":"bytes","nodeType":"ElementaryTypeName","src":"1568:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1548:9:12","nodeType":"StructDefinition","scope":2022,"src":"1541:45:12","visibility":"public"},{"body":{"id":1943,"nodeType":"Block","src":"1768:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"1830:38:12","statements":[{"nodeType":"YulAssignment","src":"1844:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"1854:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"1844:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1940,"isOffset":false,"isSlot":true,"src":"1844:6:12","suffix":"slot","valueSize":1},{"declaration":1936,"isOffset":false,"isSlot":false,"src":"1854:4:12","valueSize":1}],"id":1942,"nodeType":"InlineAssembly","src":"1821:47:12"}]},"documentation":{"id":1934,"nodeType":"StructuredDocumentation","src":"1592:87:12","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":1944,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1693:14:12","nodeType":"FunctionDefinition","parameters":{"id":1937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1936,"mutability":"mutable","name":"slot","nameLocation":"1716:4:12","nodeType":"VariableDeclaration","scope":1944,"src":"1708:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1935,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1708:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1707:14:12"},"returnParameters":{"id":1941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1940,"mutability":"mutable","name":"r","nameLocation":"1765:1:12","nodeType":"VariableDeclaration","scope":1944,"src":"1745:21:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":1939,"nodeType":"UserDefinedTypeName","pathNode":{"id":1938,"name":"AddressSlot","nameLocations":["1745:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":1918,"src":"1745:11:12"},"referencedDeclaration":1918,"src":"1745:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1744:23:12"},"scope":2022,"src":"1684:190:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1954,"nodeType":"Block","src":"2056:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"2118:38:12","statements":[{"nodeType":"YulAssignment","src":"2132:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"2142:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2132:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1951,"isOffset":false,"isSlot":true,"src":"2132:6:12","suffix":"slot","valueSize":1},{"declaration":1947,"isOffset":false,"isSlot":false,"src":"2142:4:12","valueSize":1}],"id":1953,"nodeType":"InlineAssembly","src":"2109:47:12"}]},"documentation":{"id":1945,"nodeType":"StructuredDocumentation","src":"1880:87:12","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":1955,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"1981:14:12","nodeType":"FunctionDefinition","parameters":{"id":1948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1947,"mutability":"mutable","name":"slot","nameLocation":"2004:4:12","nodeType":"VariableDeclaration","scope":1955,"src":"1996:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1946,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1996:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1995:14:12"},"returnParameters":{"id":1952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1951,"mutability":"mutable","name":"r","nameLocation":"2053:1:12","nodeType":"VariableDeclaration","scope":1955,"src":"2033:21:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1921_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":1950,"nodeType":"UserDefinedTypeName","pathNode":{"id":1949,"name":"BooleanSlot","nameLocations":["2033:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2033:11:12"},"referencedDeclaration":1921,"src":"2033:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1921_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2032:23:12"},"scope":2022,"src":"1972:190:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1965,"nodeType":"Block","src":"2344:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"2406:38:12","statements":[{"nodeType":"YulAssignment","src":"2420:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"2430:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2420:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1962,"isOffset":false,"isSlot":true,"src":"2420:6:12","suffix":"slot","valueSize":1},{"declaration":1958,"isOffset":false,"isSlot":false,"src":"2430:4:12","valueSize":1}],"id":1964,"nodeType":"InlineAssembly","src":"2397:47:12"}]},"documentation":{"id":1956,"nodeType":"StructuredDocumentation","src":"2168:87:12","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":1966,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2269:14:12","nodeType":"FunctionDefinition","parameters":{"id":1959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1958,"mutability":"mutable","name":"slot","nameLocation":"2292:4:12","nodeType":"VariableDeclaration","scope":1966,"src":"2284:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1957,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2283:14:12"},"returnParameters":{"id":1963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1962,"mutability":"mutable","name":"r","nameLocation":"2341:1:12","nodeType":"VariableDeclaration","scope":1966,"src":"2321:21:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1924_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":1961,"nodeType":"UserDefinedTypeName","pathNode":{"id":1960,"name":"Bytes32Slot","nameLocations":["2321:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":1924,"src":"2321:11:12"},"referencedDeclaration":1924,"src":"2321:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1924_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2320:23:12"},"scope":2022,"src":"2260:190:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1976,"nodeType":"Block","src":"2632:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"2694:38:12","statements":[{"nodeType":"YulAssignment","src":"2708:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"2718:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2708:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1973,"isOffset":false,"isSlot":true,"src":"2708:6:12","suffix":"slot","valueSize":1},{"declaration":1969,"isOffset":false,"isSlot":false,"src":"2718:4:12","valueSize":1}],"id":1975,"nodeType":"InlineAssembly","src":"2685:47:12"}]},"documentation":{"id":1967,"nodeType":"StructuredDocumentation","src":"2456:87:12","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":1977,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2557:14:12","nodeType":"FunctionDefinition","parameters":{"id":1970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1969,"mutability":"mutable","name":"slot","nameLocation":"2580:4:12","nodeType":"VariableDeclaration","scope":1977,"src":"2572:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1968,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2572:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2571:14:12"},"returnParameters":{"id":1974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1973,"mutability":"mutable","name":"r","nameLocation":"2629:1:12","nodeType":"VariableDeclaration","scope":1977,"src":"2609:21:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1927_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":1972,"nodeType":"UserDefinedTypeName","pathNode":{"id":1971,"name":"Uint256Slot","nameLocations":["2609:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":1927,"src":"2609:11:12"},"referencedDeclaration":1927,"src":"2609:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1927_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2608:23:12"},"scope":2022,"src":"2548:190:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1987,"nodeType":"Block","src":"2917:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"2979:38:12","statements":[{"nodeType":"YulAssignment","src":"2993:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"3003:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2993:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1984,"isOffset":false,"isSlot":true,"src":"2993:6:12","suffix":"slot","valueSize":1},{"declaration":1980,"isOffset":false,"isSlot":false,"src":"3003:4:12","valueSize":1}],"id":1986,"nodeType":"InlineAssembly","src":"2970:47:12"}]},"documentation":{"id":1978,"nodeType":"StructuredDocumentation","src":"2744:86:12","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":1988,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"2844:13:12","nodeType":"FunctionDefinition","parameters":{"id":1981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1980,"mutability":"mutable","name":"slot","nameLocation":"2866:4:12","nodeType":"VariableDeclaration","scope":1988,"src":"2858:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2858:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2857:14:12"},"returnParameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"r","nameLocation":"2914:1:12","nodeType":"VariableDeclaration","scope":1988,"src":"2895:20:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1930_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1983,"nodeType":"UserDefinedTypeName","pathNode":{"id":1982,"name":"StringSlot","nameLocations":["2895:10:12"],"nodeType":"IdentifierPath","referencedDeclaration":1930,"src":"2895:10:12"},"referencedDeclaration":1930,"src":"2895:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1930_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"2894:22:12"},"scope":2022,"src":"2835:188:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1998,"nodeType":"Block","src":"3225:112:12","statements":[{"AST":{"nodeType":"YulBlock","src":"3287:44:12","statements":[{"nodeType":"YulAssignment","src":"3301:20:12","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3311:10:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3301:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1995,"isOffset":false,"isSlot":true,"src":"3301:6:12","suffix":"slot","valueSize":1},{"declaration":1991,"isOffset":false,"isSlot":true,"src":"3311:10:12","suffix":"slot","valueSize":1}],"id":1997,"nodeType":"InlineAssembly","src":"3278:53:12"}]},"documentation":{"id":1989,"nodeType":"StructuredDocumentation","src":"3029:101:12","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":1999,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3144:13:12","nodeType":"FunctionDefinition","parameters":{"id":1992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"store","nameLocation":"3173:5:12","nodeType":"VariableDeclaration","scope":1999,"src":"3158:20:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1990,"name":"string","nodeType":"ElementaryTypeName","src":"3158:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3157:22:12"},"returnParameters":{"id":1996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1995,"mutability":"mutable","name":"r","nameLocation":"3222:1:12","nodeType":"VariableDeclaration","scope":1999,"src":"3203:20:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1930_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1994,"nodeType":"UserDefinedTypeName","pathNode":{"id":1993,"name":"StringSlot","nameLocations":["3203:10:12"],"nodeType":"IdentifierPath","referencedDeclaration":1930,"src":"3203:10:12"},"referencedDeclaration":1930,"src":"3203:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1930_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3202:22:12"},"scope":2022,"src":"3135:202:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2009,"nodeType":"Block","src":"3513:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"3575:38:12","statements":[{"nodeType":"YulAssignment","src":"3589:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"3599:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3589:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2006,"isOffset":false,"isSlot":true,"src":"3589:6:12","suffix":"slot","valueSize":1},{"declaration":2002,"isOffset":false,"isSlot":false,"src":"3599:4:12","valueSize":1}],"id":2008,"nodeType":"InlineAssembly","src":"3566:47:12"}]},"documentation":{"id":2000,"nodeType":"StructuredDocumentation","src":"3343:85:12","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2010,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3442:12:12","nodeType":"FunctionDefinition","parameters":{"id":2003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2002,"mutability":"mutable","name":"slot","nameLocation":"3463:4:12","nodeType":"VariableDeclaration","scope":2010,"src":"3455:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2001,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3455:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3454:14:12"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"r","nameLocation":"3510:1:12","nodeType":"VariableDeclaration","scope":2010,"src":"3492:19:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1933_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2005,"nodeType":"UserDefinedTypeName","pathNode":{"id":2004,"name":"BytesSlot","nameLocations":["3492:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":1933,"src":"3492:9:12"},"referencedDeclaration":1933,"src":"3492:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1933_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3491:21:12"},"scope":2022,"src":"3433:186:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2020,"nodeType":"Block","src":"3816:112:12","statements":[{"AST":{"nodeType":"YulBlock","src":"3878:44:12","statements":[{"nodeType":"YulAssignment","src":"3892:20:12","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3902:10:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3892:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2017,"isOffset":false,"isSlot":true,"src":"3892:6:12","suffix":"slot","valueSize":1},{"declaration":2013,"isOffset":false,"isSlot":true,"src":"3902:10:12","suffix":"slot","valueSize":1}],"id":2019,"nodeType":"InlineAssembly","src":"3869:53:12"}]},"documentation":{"id":2011,"nodeType":"StructuredDocumentation","src":"3625:99:12","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2021,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3738:12:12","nodeType":"FunctionDefinition","parameters":{"id":2014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2013,"mutability":"mutable","name":"store","nameLocation":"3765:5:12","nodeType":"VariableDeclaration","scope":2021,"src":"3751:19:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2012,"name":"bytes","nodeType":"ElementaryTypeName","src":"3751:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3750:21:12"},"returnParameters":{"id":2018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2017,"mutability":"mutable","name":"r","nameLocation":"3813:1:12","nodeType":"VariableDeclaration","scope":2021,"src":"3795:19:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1933_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2016,"nodeType":"UserDefinedTypeName","pathNode":{"id":2015,"name":"BytesSlot","nameLocations":["3795:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":1933,"src":"3795:9:12"},"referencedDeclaration":1933,"src":"3795:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1933_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3794:21:12"},"scope":2022,"src":"3729:199:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2023,"src":"1245:2685:12","usedErrors":[],"usedEvents":[]}],"src":"193:3738:12"},"id":12},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[3417],"SignedMath":[3522],"Strings":[2277]},"id":2278,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2024,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:13"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":2026,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2278,"sourceUnit":3418,"src":"127:37:13","symbolAliases":[{"foreign":{"id":2025,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"135:4:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":2028,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2278,"sourceUnit":3523,"src":"165:49:13","symbolAliases":[{"foreign":{"id":2027,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3522,"src":"173:10:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":2029,"nodeType":"StructuredDocumentation","src":"216:34:13","text":" @dev String operations."},"fullyImplemented":true,"id":2277,"linearizedBaseContracts":[2277],"name":"Strings","nameLocation":"259:7:13","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2032,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"298:10:13","nodeType":"VariableDeclaration","scope":2277,"src":"273:56:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":2030,"name":"bytes16","nodeType":"ElementaryTypeName","src":"273:7:13","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":2031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":2035,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"358:14:13","nodeType":"VariableDeclaration","scope":2277,"src":"335:42:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2033,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"375:2:13","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"documentation":{"id":2036,"nodeType":"StructuredDocumentation","src":"384:81:13","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":2042,"name":"StringsInsufficientHexLength","nameLocation":"476:28:13","nodeType":"ErrorDefinition","parameters":{"id":2041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2038,"mutability":"mutable","name":"value","nameLocation":"513:5:13","nodeType":"VariableDeclaration","scope":2042,"src":"505:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2037,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2040,"mutability":"mutable","name":"length","nameLocation":"528:6:13","nodeType":"VariableDeclaration","scope":2042,"src":"520:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2039,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:31:13"},"src":"470:66:13"},{"body":{"id":2089,"nodeType":"Block","src":"708:627:13","statements":[{"id":2088,"nodeType":"UncheckedBlock","src":"718:611:13","statements":[{"assignments":[2051],"declarations":[{"constant":false,"id":2051,"mutability":"mutable","name":"length","nameLocation":"750:6:13","nodeType":"VariableDeclaration","scope":2088,"src":"742:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2050,"name":"uint256","nodeType":"ElementaryTypeName","src":"742:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2058,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2054,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"770:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2052,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"759:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3417_$","typeString":"type(library Math)"}},"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"764:5:13","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":3237,"src":"759:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"759:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"779:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"759:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"742:38:13"},{"assignments":[2060],"declarations":[{"constant":false,"id":2060,"mutability":"mutable","name":"buffer","nameLocation":"808:6:13","nodeType":"VariableDeclaration","scope":2088,"src":"794:20:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2059,"name":"string","nodeType":"ElementaryTypeName","src":"794:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2065,"initialValue":{"arguments":[{"id":2063,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"828:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"817:10:13","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":2061,"name":"string","nodeType":"ElementaryTypeName","src":"821:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"817:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"794:41:13"},{"assignments":[2067],"declarations":[{"constant":false,"id":2067,"mutability":"mutable","name":"ptr","nameLocation":"857:3:13","nodeType":"VariableDeclaration","scope":2088,"src":"849:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2066,"name":"uint256","nodeType":"ElementaryTypeName","src":"849:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2068,"nodeType":"VariableDeclarationStatement","src":"849:11:13"},{"AST":{"nodeType":"YulBlock","src":"930:67:13","statements":[{"nodeType":"YulAssignment","src":"948:35:13","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"959:6:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"971:2:13","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"975:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:13"},"nodeType":"YulFunctionCall","src":"967:15:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"955:3:13"},"nodeType":"YulFunctionCall","src":"955:28:13"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"948:3:13"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2060,"isOffset":false,"isSlot":false,"src":"959:6:13","valueSize":1},{"declaration":2051,"isOffset":false,"isSlot":false,"src":"975:6:13","valueSize":1},{"declaration":2067,"isOffset":false,"isSlot":false,"src":"948:3:13","valueSize":1}],"id":2069,"nodeType":"InlineAssembly","src":"921:76:13"},{"body":{"id":2084,"nodeType":"Block","src":"1023:269:13","statements":[{"expression":{"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1041:5:13","subExpression":{"id":2071,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2067,"src":"1041:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2073,"nodeType":"ExpressionStatement","src":"1041:5:13"},{"AST":{"nodeType":"YulBlock","src":"1124:86:13","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1154:3:13"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"1175:2:13","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"1164:3:13"},"nodeType":"YulFunctionCall","src":"1164:14:13"},{"name":"HEX_DIGITS","nodeType":"YulIdentifier","src":"1180:10:13"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"1159:4:13"},"nodeType":"YulFunctionCall","src":"1159:32:13"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"1146:7:13"},"nodeType":"YulFunctionCall","src":"1146:46:13"},"nodeType":"YulExpressionStatement","src":"1146:46:13"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2032,"isOffset":false,"isSlot":false,"src":"1180:10:13","valueSize":1},{"declaration":2067,"isOffset":false,"isSlot":false,"src":"1154:3:13","valueSize":1},{"declaration":2045,"isOffset":false,"isSlot":false,"src":"1168:5:13","valueSize":1}],"id":2074,"nodeType":"InlineAssembly","src":"1115:95:13"},{"expression":{"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"1227:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":2076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1227:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2078,"nodeType":"ExpressionStatement","src":"1227:11:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2079,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"1260:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1269:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1260:10:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2083,"nodeType":"IfStatement","src":"1256:21:13","trueBody":{"id":2082,"nodeType":"Break","src":"1272:5:13"}}]},"condition":{"hexValue":"74727565","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1017:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":2085,"nodeType":"WhileStatement","src":"1010:282:13"},{"expression":{"id":2086,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"1312:6:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2049,"id":2087,"nodeType":"Return","src":"1305:13:13"}]}]},"documentation":{"id":2043,"nodeType":"StructuredDocumentation","src":"542:90:13","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":2090,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"646:8:13","nodeType":"FunctionDefinition","parameters":{"id":2046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2045,"mutability":"mutable","name":"value","nameLocation":"663:5:13","nodeType":"VariableDeclaration","scope":2090,"src":"655:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2044,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:15:13"},"returnParameters":{"id":2049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2090,"src":"693:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2047,"name":"string","nodeType":"ElementaryTypeName","src":"693:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"692:15:13"},"scope":2277,"src":"637:698:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2115,"nodeType":"Block","src":"1511:92:13","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2101,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2093,"src":"1542:5:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":2102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1550:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1542:9:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":2105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1560:2:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1542:20:13","trueExpression":{"hexValue":"2d","id":2104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1554:3:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":2110,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2093,"src":"1588:5:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":2108,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3522,"src":"1573:10:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$3522_$","typeString":"type(library SignedMath)"}},"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1584:3:13","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":3521,"src":"1573:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:21:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2107,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1564:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:31:13","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":2099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1528:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2098,"name":"string","nodeType":"ElementaryTypeName","src":"1528:6:13","typeDescriptions":{}}},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1535:6:13","memberName":"concat","nodeType":"MemberAccess","src":"1528:13:13","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:68:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2097,"id":2114,"nodeType":"Return","src":"1521:75:13"}]},"documentation":{"id":2091,"nodeType":"StructuredDocumentation","src":"1341:89:13","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":2116,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"1444:14:13","nodeType":"FunctionDefinition","parameters":{"id":2094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2093,"mutability":"mutable","name":"value","nameLocation":"1466:5:13","nodeType":"VariableDeclaration","scope":2116,"src":"1459:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2092,"name":"int256","nodeType":"ElementaryTypeName","src":"1459:6:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1458:14:13"},"returnParameters":{"id":2097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2116,"src":"1496:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2095,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1495:15:13"},"scope":2277,"src":"1435:168:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2135,"nodeType":"Block","src":"1782:100:13","statements":[{"id":2134,"nodeType":"UncheckedBlock","src":"1792:84:13","statements":[{"expression":{"arguments":[{"id":2125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"1835:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2128,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"1854:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2126,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3417,"src":"1842:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3417_$","typeString":"type(library Math)"}},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1847:6:13","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":3359,"src":"1842:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1842:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1842:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2124,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2136,2219,2239],"referencedDeclaration":2219,"src":"1823:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:42:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2123,"id":2133,"nodeType":"Return","src":"1816:49:13"}]}]},"documentation":{"id":2117,"nodeType":"StructuredDocumentation","src":"1609:94:13","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":2136,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1717:11:13","nodeType":"FunctionDefinition","parameters":{"id":2120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2119,"mutability":"mutable","name":"value","nameLocation":"1737:5:13","nodeType":"VariableDeclaration","scope":2136,"src":"1729:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1729:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1728:15:13"},"returnParameters":{"id":2123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2136,"src":"1767:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2121,"name":"string","nodeType":"ElementaryTypeName","src":"1767:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1766:15:13"},"scope":2277,"src":"1708:174:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2218,"nodeType":"Block","src":"2095:435:13","statements":[{"assignments":[2147],"declarations":[{"constant":false,"id":2147,"mutability":"mutable","name":"localValue","nameLocation":"2113:10:13","nodeType":"VariableDeclaration","scope":2218,"src":"2105:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2146,"name":"uint256","nodeType":"ElementaryTypeName","src":"2105:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2149,"initialValue":{"id":2148,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"2126:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2105:26:13"},{"assignments":[2151],"declarations":[{"constant":false,"id":2151,"mutability":"mutable","name":"buffer","nameLocation":"2154:6:13","nodeType":"VariableDeclaration","scope":2218,"src":"2141:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2150,"name":"bytes","nodeType":"ElementaryTypeName","src":"2141:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2160,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2173:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2155,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"2177:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2173:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":2157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2186:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2173:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2163:9:13","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2152,"name":"bytes","nodeType":"ElementaryTypeName","src":"2167:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2163:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2141:47:13"},{"expression":{"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2161,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2198:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2163,"indexExpression":{"hexValue":"30","id":2162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2205:1:13","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:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2210:3:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2198:15:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2166,"nodeType":"ExpressionStatement","src":"2198:15:13"},{"expression":{"id":2171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2167,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2223:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2169,"indexExpression":{"hexValue":"31","id":2168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2230:1:13","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:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":2170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2235:3:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2223:15:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2172,"nodeType":"ExpressionStatement","src":"2223:15:13"},{"body":{"id":2201,"nodeType":"Block","src":"2293:95:13","statements":[{"expression":{"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2187,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2307:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2189,"indexExpression":{"id":2188,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"2314:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2307:9:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2190,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"2319:10:13","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":2194,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2191,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"2330:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":2192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2343:3:13","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2330:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2319:28:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2307:40:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2196,"nodeType":"ExpressionStatement","src":"2307:40:13"},{"expression":{"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2197,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"2361:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2361:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2200,"nodeType":"ExpressionStatement","src":"2361:16:13"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2181,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"2281:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":2182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2285:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2281:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"initializationExpression":{"assignments":[2174],"declarations":[{"constant":false,"id":2174,"mutability":"mutable","name":"i","nameLocation":"2261:1:13","nodeType":"VariableDeclaration","scope":2202,"src":"2253:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2180,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2265:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2176,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"2269:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2265:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2278:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2265:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2253:26:13"},"loopExpression":{"expression":{"id":2185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2288:3:13","subExpression":{"id":2184,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"2290:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2186,"nodeType":"ExpressionStatement","src":"2288:3:13"},"nodeType":"ForStatement","src":"2248:140:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2203,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"2401:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2415:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2401:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2212,"nodeType":"IfStatement","src":"2397:96:13","trueBody":{"id":2211,"nodeType":"Block","src":"2418:75:13","statements":[{"errorCall":{"arguments":[{"id":2207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"2468:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2208,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"2475:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2206,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"2439:28:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2439:43:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2210,"nodeType":"RevertStatement","src":"2432:50:13"}]}},{"expression":{"arguments":[{"id":2215,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2516:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2213,"name":"string","nodeType":"ElementaryTypeName","src":"2509:6:13","typeDescriptions":{}}},"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:14:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2145,"id":2217,"nodeType":"Return","src":"2502:21:13"}]},"documentation":{"id":2137,"nodeType":"StructuredDocumentation","src":"1888:112:13","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":2219,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2014:11:13","nodeType":"FunctionDefinition","parameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2139,"mutability":"mutable","name":"value","nameLocation":"2034:5:13","nodeType":"VariableDeclaration","scope":2219,"src":"2026:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2138,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2141,"mutability":"mutable","name":"length","nameLocation":"2049:6:13","nodeType":"VariableDeclaration","scope":2219,"src":"2041:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2140,"name":"uint256","nodeType":"ElementaryTypeName","src":"2041:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2025:31:13"},"returnParameters":{"id":2145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2219,"src":"2080:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2143,"name":"string","nodeType":"ElementaryTypeName","src":"2080:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2079:15:13"},"scope":2277,"src":"2005:525:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2238,"nodeType":"Block","src":"2762:75:13","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":2232,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"2807:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2799:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2230,"name":"uint160","nodeType":"ElementaryTypeName","src":"2799:7:13","typeDescriptions":{}}},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2791:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2228,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:13","typeDescriptions":{}}},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2235,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"2815:14:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2227,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2136,2219,2239],"referencedDeclaration":2219,"src":"2779:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2779:51:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2226,"id":2237,"nodeType":"Return","src":"2772:58:13"}]},"documentation":{"id":2220,"nodeType":"StructuredDocumentation","src":"2536:148:13","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":2239,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2698:11:13","nodeType":"FunctionDefinition","parameters":{"id":2223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2222,"mutability":"mutable","name":"addr","nameLocation":"2718:4:13","nodeType":"VariableDeclaration","scope":2239,"src":"2710:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2221,"name":"address","nodeType":"ElementaryTypeName","src":"2710:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2709:14:13"},"returnParameters":{"id":2226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2239,"src":"2747:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2224,"name":"string","nodeType":"ElementaryTypeName","src":"2747:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2746:15:13"},"scope":2277,"src":"2689:148:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2275,"nodeType":"Block","src":"2992:104:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2251,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"3015:1:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2249,"name":"bytes","nodeType":"ElementaryTypeName","src":"3009:5:13","typeDescriptions":{}}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:8:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3018:6:13","memberName":"length","nodeType":"MemberAccess","src":"3009:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2256,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2244,"src":"3034:1:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3028:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2254,"name":"bytes","nodeType":"ElementaryTypeName","src":"3028:5:13","typeDescriptions":{}}},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3028:8:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3037:6:13","memberName":"length","nodeType":"MemberAccess","src":"3028:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3009:34:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2263,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"3063:1:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3057:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2261,"name":"bytes","nodeType":"ElementaryTypeName","src":"3057:5:13","typeDescriptions":{}}},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:8:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2260,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3047:9:13","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3047:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":2269,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2244,"src":"3086:1:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2267,"name":"bytes","nodeType":"ElementaryTypeName","src":"3080:5:13","typeDescriptions":{}}},"id":2270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:8:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2266,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3070:9:13","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3047:42:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3009:80:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2248,"id":2274,"nodeType":"Return","src":"3002:87:13"}]},"documentation":{"id":2240,"nodeType":"StructuredDocumentation","src":"2843:66:13","text":" @dev Returns true if the two strings are equal."},"id":2276,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2923:5:13","nodeType":"FunctionDefinition","parameters":{"id":2245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2242,"mutability":"mutable","name":"a","nameLocation":"2943:1:13","nodeType":"VariableDeclaration","scope":2276,"src":"2929:15:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2241,"name":"string","nodeType":"ElementaryTypeName","src":"2929:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2244,"mutability":"mutable","name":"b","nameLocation":"2960:1:13","nodeType":"VariableDeclaration","scope":2276,"src":"2946:15:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2243,"name":"string","nodeType":"ElementaryTypeName","src":"2946:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2928:34:13"},"returnParameters":{"id":2248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2276,"src":"2986:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2246,"name":"bool","nodeType":"ElementaryTypeName","src":"2986:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2985:6:13"},"scope":2277,"src":"2914:182:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2278,"src":"251:2847:13","usedErrors":[2042],"usedEvents":[]}],"src":"101:2998:13"},"id":13},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","exportedSymbols":{"MessageHashUtils":[2351],"Strings":[2277]},"id":2352,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2279,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:14"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../Strings.sol","id":2281,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2352,"sourceUnit":2278,"src":"149:39:14","symbolAliases":[{"foreign":{"id":2280,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2277,"src":"157:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"MessageHashUtils","contractDependencies":[],"contractKind":"library","documentation":{"id":2282,"nodeType":"StructuredDocumentation","src":"190:330:14","text":" @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n The library provides methods for generating a hash of a message that conforms to the\n https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n specifications."},"fullyImplemented":true,"id":2351,"linearizedBaseContracts":[2351],"name":"MessageHashUtils","nameLocation":"529:16:14","nodeType":"ContractDefinition","nodes":[{"body":{"id":2291,"nodeType":"Block","src":"1314:368:14","statements":[{"AST":{"nodeType":"YulBlock","src":"1376:300:14","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1397:4:14","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nodeType":"YulLiteral","src":"1403:34:14","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1390:6:14"},"nodeType":"YulFunctionCall","src":"1390:48:14"},"nodeType":"YulExpressionStatement","src":"1390:48:14"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1499:4:14","type":"","value":"0x1c"},{"name":"messageHash","nodeType":"YulIdentifier","src":"1505:11:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1492:6:14"},"nodeType":"YulFunctionCall","src":"1492:25:14"},"nodeType":"YulExpressionStatement","src":"1492:25:14"},{"nodeType":"YulAssignment","src":"1571:31:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1591:4:14","type":"","value":"0x00"},{"kind":"number","nodeType":"YulLiteral","src":"1597:4:14","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1581:9:14"},"nodeType":"YulFunctionCall","src":"1581:21:14"},"variableNames":[{"name":"digest","nodeType":"YulIdentifier","src":"1571:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2288,"isOffset":false,"isSlot":false,"src":"1571:6:14","valueSize":1},{"declaration":2285,"isOffset":false,"isSlot":false,"src":"1505:11:14","valueSize":1}],"id":2290,"nodeType":"InlineAssembly","src":"1367:309:14"}]},"documentation":{"id":2283,"nodeType":"StructuredDocumentation","src":"552:665:14","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing a bytes32 `messageHash` with\n `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n keccak256, although any bytes32 value can be safely used because the final digest will\n be re-hashed.\n See {ECDSA-recover}."},"id":2292,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"1231:22:14","nodeType":"FunctionDefinition","parameters":{"id":2286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2285,"mutability":"mutable","name":"messageHash","nameLocation":"1262:11:14","nodeType":"VariableDeclaration","scope":2292,"src":"1254:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2284,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1254:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1253:21:14"},"returnParameters":{"id":2289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2288,"mutability":"mutable","name":"digest","nameLocation":"1306:6:14","nodeType":"VariableDeclaration","scope":2292,"src":"1298:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1298:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1297:16:14"},"scope":2351,"src":"1222:460:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2317,"nodeType":"Block","src":"2234:143:14","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":2304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2286:32:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"arguments":[{"expression":{"id":2309,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2295,"src":"2343:7:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2351:6:14","memberName":"length","nodeType":"MemberAccess","src":"2343:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2307,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2277,"src":"2326:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$2277_$","typeString":"type(library Strings)"}},"id":2308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2334:8:14","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":2090,"src":"2326:16:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":2311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2326:32:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2320:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2305,"name":"bytes","nodeType":"ElementaryTypeName","src":"2320:5:14","typeDescriptions":{}}},"id":2312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:39:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2313,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2295,"src":"2361:7:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2273:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2301,"name":"bytes","nodeType":"ElementaryTypeName","src":"2273:5:14","typeDescriptions":{}}},"id":2303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2279:6:14","memberName":"concat","nodeType":"MemberAccess","src":"2273:12:14","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2273:96:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2300,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2263:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:107:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2299,"id":2316,"nodeType":"Return","src":"2244:126:14"}]},"documentation":{"id":2293,"nodeType":"StructuredDocumentation","src":"1688:455:14","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing an arbitrary `message` with\n `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n See {ECDSA-recover}."},"id":2318,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"2157:22:14","nodeType":"FunctionDefinition","parameters":{"id":2296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2295,"mutability":"mutable","name":"message","nameLocation":"2193:7:14","nodeType":"VariableDeclaration","scope":2318,"src":"2180:20:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2294,"name":"bytes","nodeType":"ElementaryTypeName","src":"2180:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2179:22:14"},"returnParameters":{"id":2299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2318,"src":"2225:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2225:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2224:9:14"},"scope":2351,"src":"2148:229:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2337,"nodeType":"Block","src":"2831:80:14","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":2331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2875:10:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":2332,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"2887:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2333,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2323,"src":"2898:4:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2329,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2858:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2862:12:14","memberName":"encodePacked","nodeType":"MemberAccess","src":"2858:16:14","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2858:45:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2328,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2848:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2848:56:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2327,"id":2336,"nodeType":"Return","src":"2841:63:14"}]},"documentation":{"id":2319,"nodeType":"StructuredDocumentation","src":"2383:332:14","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x00` (data with intended validator).\n The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n `validator` address. Then hashing the result.\n See {ECDSA-recover}."},"id":2338,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"2729:31:14","nodeType":"FunctionDefinition","parameters":{"id":2324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2321,"mutability":"mutable","name":"validator","nameLocation":"2769:9:14","nodeType":"VariableDeclaration","scope":2338,"src":"2761:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2320,"name":"address","nodeType":"ElementaryTypeName","src":"2761:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2323,"mutability":"mutable","name":"data","nameLocation":"2793:4:14","nodeType":"VariableDeclaration","scope":2338,"src":"2780:17:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2322,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2760:38:14"},"returnParameters":{"id":2327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2326,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2338,"src":"2822:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2325,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2822:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2821:9:14"},"scope":2351,"src":"2720:191:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2349,"nodeType":"Block","src":"3462:292:14","statements":[{"AST":{"nodeType":"YulBlock","src":"3524:224:14","statements":[{"nodeType":"YulVariableDeclaration","src":"3538:22:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3555:4:14","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3549:5:14"},"nodeType":"YulFunctionCall","src":"3549:11:14"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"3542:3:14","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3580:3:14"},{"hexValue":"1901","kind":"string","nodeType":"YulLiteral","src":"3585:10:14","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3573:6:14"},"nodeType":"YulFunctionCall","src":"3573:23:14"},"nodeType":"YulExpressionStatement","src":"3573:23:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3620:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3625:4:14","type":"","value":"0x02"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3616:3:14"},"nodeType":"YulFunctionCall","src":"3616:14:14"},{"name":"domainSeparator","nodeType":"YulIdentifier","src":"3632:15:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3609:6:14"},"nodeType":"YulFunctionCall","src":"3609:39:14"},"nodeType":"YulExpressionStatement","src":"3609:39:14"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3672:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3677:4:14","type":"","value":"0x22"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3668:3:14"},"nodeType":"YulFunctionCall","src":"3668:14:14"},{"name":"structHash","nodeType":"YulIdentifier","src":"3684:10:14"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3661:6:14"},"nodeType":"YulFunctionCall","src":"3661:34:14"},"nodeType":"YulExpressionStatement","src":"3661:34:14"},{"nodeType":"YulAssignment","src":"3708:30:14","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3728:3:14"},{"kind":"number","nodeType":"YulLiteral","src":"3733:4:14","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3718:9:14"},"nodeType":"YulFunctionCall","src":"3718:20:14"},"variableNames":[{"name":"digest","nodeType":"YulIdentifier","src":"3708:6:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2346,"isOffset":false,"isSlot":false,"src":"3708:6:14","valueSize":1},{"declaration":2341,"isOffset":false,"isSlot":false,"src":"3632:15:14","valueSize":1},{"declaration":2343,"isOffset":false,"isSlot":false,"src":"3684:10:14","valueSize":1}],"id":2348,"nodeType":"InlineAssembly","src":"3515:233:14"}]},"documentation":{"id":2339,"nodeType":"StructuredDocumentation","src":"2917:431:14","text":" @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\n The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n See {ECDSA-recover}."},"id":2350,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"3362:15:14","nodeType":"FunctionDefinition","parameters":{"id":2344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2341,"mutability":"mutable","name":"domainSeparator","nameLocation":"3386:15:14","nodeType":"VariableDeclaration","scope":2350,"src":"3378:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2340,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3378:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2343,"mutability":"mutable","name":"structHash","nameLocation":"3411:10:14","nodeType":"VariableDeclaration","scope":2350,"src":"3403:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3403:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3377:45:14"},"returnParameters":{"id":2347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2346,"mutability":"mutable","name":"digest","nameLocation":"3454:6:14","nodeType":"VariableDeclaration","scope":2350,"src":"3446:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3446:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3445:16:14"},"scope":2351,"src":"3353:401:14","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2352,"src":"521:3235:14","usedErrors":[],"usedEvents":[]}],"src":"123:3634:14"},"id":14},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2363]},"id":2364,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2353,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:15"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2354,"nodeType":"StructuredDocumentation","src":"141:279:15","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,"id":2363,"linearizedBaseContracts":[2363],"name":"IERC165","nameLocation":"431:7:15","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2355,"nodeType":"StructuredDocumentation","src":"445:340:15","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","id":2362,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"799:17:15","nodeType":"FunctionDefinition","parameters":{"id":2358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2357,"mutability":"mutable","name":"interfaceId","nameLocation":"824:11:15","nodeType":"VariableDeclaration","scope":2362,"src":"817:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2356,"name":"bytes4","nodeType":"ElementaryTypeName","src":"817:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"816:20:15"},"returnParameters":{"id":2361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2362,"src":"860:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2359,"name":"bool","nodeType":"ElementaryTypeName","src":"860:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"859:6:15"},"scope":2363,"src":"790:76:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2364,"src":"421:447:15","usedErrors":[],"usedEvents":[]}],"src":"115:754:15"},"id":15},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[3417]},"id":3418,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2365,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:16"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":2366,"nodeType":"StructuredDocumentation","src":"129:73:16","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3417,"linearizedBaseContracts":[3417],"name":"Math","nameLocation":"211:4:16","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2367,"nodeType":"StructuredDocumentation","src":"222:50:16","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","id":2369,"name":"MathOverflowedMulDiv","nameLocation":"283:20:16","nodeType":"ErrorDefinition","parameters":{"id":2368,"nodeType":"ParameterList","parameters":[],"src":"303:2:16"},"src":"277:29:16"},{"canonicalName":"Math.Rounding","id":2374,"members":[{"id":2370,"name":"Floor","nameLocation":"336:5:16","nodeType":"EnumValue","src":"336:5:16"},{"id":2371,"name":"Ceil","nameLocation":"379:4:16","nodeType":"EnumValue","src":"379:4:16"},{"id":2372,"name":"Trunc","nameLocation":"421:5:16","nodeType":"EnumValue","src":"421:5:16"},{"id":2373,"name":"Expand","nameLocation":"451:6:16","nodeType":"EnumValue","src":"451:6:16"}],"name":"Rounding","nameLocation":"317:8:16","nodeType":"EnumDefinition","src":"312:169:16"},{"body":{"id":2405,"nodeType":"Block","src":"661:140:16","statements":[{"id":2404,"nodeType":"UncheckedBlock","src":"671:124:16","statements":[{"assignments":[2387],"declarations":[{"constant":false,"id":2387,"mutability":"mutable","name":"c","nameLocation":"703:1:16","nodeType":"VariableDeclaration","scope":2404,"src":"695:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2386,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2391,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2388,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"707:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2389,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2379,"src":"711:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"707:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"695:17:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2392,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"730:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2393,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"734:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2399,"nodeType":"IfStatement","src":"726:28:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"745:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"752:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"744:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2385,"id":2398,"nodeType":"Return","src":"737:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":2400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"776:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2401,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2387,"src":"782:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2402,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"775:9:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2385,"id":2403,"nodeType":"Return","src":"768:16:16"}]}]},"documentation":{"id":2375,"nodeType":"StructuredDocumentation","src":"487:93:16","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"id":2406,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"594:6:16","nodeType":"FunctionDefinition","parameters":{"id":2380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2377,"mutability":"mutable","name":"a","nameLocation":"609:1:16","nodeType":"VariableDeclaration","scope":2406,"src":"601:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2376,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2379,"mutability":"mutable","name":"b","nameLocation":"620:1:16","nodeType":"VariableDeclaration","scope":2406,"src":"612:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2378,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:16"},"returnParameters":{"id":2385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2406,"src":"646:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2381,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2406,"src":"652:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2383,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:15:16"},"scope":3417,"src":"585:216:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2433,"nodeType":"Block","src":"984:113:16","statements":[{"id":2432,"nodeType":"UncheckedBlock","src":"994:97:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2418,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2411,"src":"1022:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2419,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2409,"src":"1026:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2425,"nodeType":"IfStatement","src":"1018:28:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1037:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2423,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1036:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2417,"id":2424,"nodeType":"Return","src":"1029:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1068:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2427,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2409,"src":"1074:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2428,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2411,"src":"1078:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2430,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:13:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2417,"id":2431,"nodeType":"Return","src":"1060:20:16"}]}]},"documentation":{"id":2407,"nodeType":"StructuredDocumentation","src":"807:96:16","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"id":2434,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"917:6:16","nodeType":"FunctionDefinition","parameters":{"id":2412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2409,"mutability":"mutable","name":"a","nameLocation":"932:1:16","nodeType":"VariableDeclaration","scope":2434,"src":"924:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2408,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2411,"mutability":"mutable","name":"b","nameLocation":"943:1:16","nodeType":"VariableDeclaration","scope":2434,"src":"935:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2410,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:22:16"},"returnParameters":{"id":2417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2414,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2434,"src":"969:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2413,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2434,"src":"975:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2415,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:15:16"},"scope":3417,"src":"908:189:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2475,"nodeType":"Block","src":"1283:417:16","statements":[{"id":2474,"nodeType":"UncheckedBlock","src":"1293:401:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2446,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"1551:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1556:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2453,"nodeType":"IfStatement","src":"1547:28:16","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":2449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1567:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":2450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1573:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2451,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1566:9:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2445,"id":2452,"nodeType":"Return","src":"1559:16:16"}},{"assignments":[2455],"declarations":[{"constant":false,"id":2455,"mutability":"mutable","name":"c","nameLocation":"1597:1:16","nodeType":"VariableDeclaration","scope":2474,"src":"1589:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2454,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2459,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2456,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"1601:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2457,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"1605:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1601:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1589:17:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2460,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2455,"src":"1624:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2461,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2437,"src":"1628:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2463,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2439,"src":"1633:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2469,"nodeType":"IfStatement","src":"1620:33:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1644:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1651:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2467,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1643:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2445,"id":2468,"nodeType":"Return","src":"1636:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":2470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1675:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2471,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2455,"src":"1681:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2472,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1674:9:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2445,"id":2473,"nodeType":"Return","src":"1667:16:16"}]}]},"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"1103:99:16","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"id":2476,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1216:6:16","nodeType":"FunctionDefinition","parameters":{"id":2440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"a","nameLocation":"1231:1:16","nodeType":"VariableDeclaration","scope":2476,"src":"1223:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2436,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"b","nameLocation":"1242:1:16","nodeType":"VariableDeclaration","scope":2476,"src":"1234:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2438,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:22:16"},"returnParameters":{"id":2445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2476,"src":"1268:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2441,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2444,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2476,"src":"1274:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2443,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1267:15:16"},"scope":3417,"src":"1207:493:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2503,"nodeType":"Block","src":"1887:114:16","statements":[{"id":2502,"nodeType":"UncheckedBlock","src":"1897:98:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2488,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"1925:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2495,"nodeType":"IfStatement","src":"1921:29:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1941:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1940:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2487,"id":2494,"nodeType":"Return","src":"1933:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":2496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2497,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"1978:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2498,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"1982:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1978:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1971:13:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2487,"id":2501,"nodeType":"Return","src":"1964:20:16"}]}]},"documentation":{"id":2477,"nodeType":"StructuredDocumentation","src":"1706:100:16","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"id":2504,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1820:6:16","nodeType":"FunctionDefinition","parameters":{"id":2482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2479,"mutability":"mutable","name":"a","nameLocation":"1835:1:16","nodeType":"VariableDeclaration","scope":2504,"src":"1827:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2478,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2481,"mutability":"mutable","name":"b","nameLocation":"1846:1:16","nodeType":"VariableDeclaration","scope":2504,"src":"1838:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2480,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:22:16"},"returnParameters":{"id":2487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2504,"src":"1872:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2483,"name":"bool","nodeType":"ElementaryTypeName","src":"1872:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2504,"src":"1878:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2485,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:15:16"},"scope":3417,"src":"1811:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2531,"nodeType":"Block","src":"2198:114:16","statements":[{"id":2530,"nodeType":"UncheckedBlock","src":"2208:98:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2516,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2509,"src":"2236:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2523,"nodeType":"IfStatement","src":"2232:29:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2252:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2521,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2251:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2515,"id":2522,"nodeType":"Return","src":"2244:17:16"}},{"expression":{"components":[{"hexValue":"74727565","id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2525,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2507,"src":"2289:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":2526,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2509,"src":"2293:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2289:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2528,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2282:13:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2515,"id":2529,"nodeType":"Return","src":"2275:20:16"}]}]},"documentation":{"id":2505,"nodeType":"StructuredDocumentation","src":"2007:110:16","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"id":2532,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2131:6:16","nodeType":"FunctionDefinition","parameters":{"id":2510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2507,"mutability":"mutable","name":"a","nameLocation":"2146:1:16","nodeType":"VariableDeclaration","scope":2532,"src":"2138:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2506,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2509,"mutability":"mutable","name":"b","nameLocation":"2157:1:16","nodeType":"VariableDeclaration","scope":2532,"src":"2149:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2508,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2137:22:16"},"returnParameters":{"id":2515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2532,"src":"2183:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2511,"name":"bool","nodeType":"ElementaryTypeName","src":"2183:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2532,"src":"2189:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2513,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:15:16"},"scope":3417,"src":"2122:190:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2549,"nodeType":"Block","src":"2449:37:16","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2542,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"2466:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2543,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2537,"src":"2470:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2466:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2546,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2537,"src":"2478:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2466:13:16","trueExpression":{"id":2545,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2535,"src":"2474:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2541,"id":2548,"nodeType":"Return","src":"2459:20:16"}]},"documentation":{"id":2533,"nodeType":"StructuredDocumentation","src":"2318:59:16","text":" @dev Returns the largest of two numbers."},"id":2550,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"2391:3:16","nodeType":"FunctionDefinition","parameters":{"id":2538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2535,"mutability":"mutable","name":"a","nameLocation":"2403:1:16","nodeType":"VariableDeclaration","scope":2550,"src":"2395:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2534,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2537,"mutability":"mutable","name":"b","nameLocation":"2414:1:16","nodeType":"VariableDeclaration","scope":2550,"src":"2406:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2536,"name":"uint256","nodeType":"ElementaryTypeName","src":"2406:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:22:16"},"returnParameters":{"id":2541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2550,"src":"2440:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2539,"name":"uint256","nodeType":"ElementaryTypeName","src":"2440:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:9:16"},"scope":3417,"src":"2382:104:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2567,"nodeType":"Block","src":"2624:37:16","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2560,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2553,"src":"2641:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2561,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"2645:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2641:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2564,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"2653:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2641:13:16","trueExpression":{"id":2563,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2553,"src":"2649:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2559,"id":2566,"nodeType":"Return","src":"2634:20:16"}]},"documentation":{"id":2551,"nodeType":"StructuredDocumentation","src":"2492:60:16","text":" @dev Returns the smallest of two numbers."},"id":2568,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"2566:3:16","nodeType":"FunctionDefinition","parameters":{"id":2556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2553,"mutability":"mutable","name":"a","nameLocation":"2578:1:16","nodeType":"VariableDeclaration","scope":2568,"src":"2570:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2552,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2555,"mutability":"mutable","name":"b","nameLocation":"2589:1:16","nodeType":"VariableDeclaration","scope":2568,"src":"2581:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2554,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2569:22:16"},"returnParameters":{"id":2559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2568,"src":"2615:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2557,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:9:16"},"scope":3417,"src":"2557:104:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2590,"nodeType":"Block","src":"2845:82:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2578,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"2900:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2579,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2904:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2581,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2899:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2582,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"2910:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2583,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2914:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2910:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2585,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2909:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":2586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2919:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2909:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2899:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2577,"id":2589,"nodeType":"Return","src":"2892:28:16"}]},"documentation":{"id":2569,"nodeType":"StructuredDocumentation","src":"2667:102:16","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":2591,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"2783:7:16","nodeType":"FunctionDefinition","parameters":{"id":2574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2571,"mutability":"mutable","name":"a","nameLocation":"2799:1:16","nodeType":"VariableDeclaration","scope":2591,"src":"2791:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2573,"mutability":"mutable","name":"b","nameLocation":"2810:1:16","nodeType":"VariableDeclaration","scope":2591,"src":"2802:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2572,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2790:22:16"},"returnParameters":{"id":2577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2576,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2591,"src":"2836:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2575,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2835:9:16"},"scope":3417,"src":"2774:153:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2624,"nodeType":"Block","src":"3219:260:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2601,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"3233:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2609,"nodeType":"IfStatement","src":"3229:127:16","trueBody":{"id":2608,"nodeType":"Block","src":"3241:115:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2604,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"3340:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2605,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"3344:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3340:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2600,"id":2607,"nodeType":"Return","src":"3333:12:16"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2610,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"3444:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3444:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2614,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"3458:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3458:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2617,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3457:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2618,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"3467:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3457:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3457:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3444:28:16","trueExpression":{"hexValue":"30","id":2613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2600,"id":2623,"nodeType":"Return","src":"3437:35:16"}]},"documentation":{"id":2592,"nodeType":"StructuredDocumentation","src":"2933:210:16","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."},"id":2625,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3157:7:16","nodeType":"FunctionDefinition","parameters":{"id":2597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2594,"mutability":"mutable","name":"a","nameLocation":"3173:1:16","nodeType":"VariableDeclaration","scope":2625,"src":"3165:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2593,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2596,"mutability":"mutable","name":"b","nameLocation":"3184:1:16","nodeType":"VariableDeclaration","scope":2625,"src":"3176:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2595,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3164:22:16"},"returnParameters":{"id":2600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2625,"src":"3210:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2598,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3209:9:16"},"scope":3417,"src":"3148:331:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2750,"nodeType":"Block","src":"3901:4018:16","statements":[{"id":2749,"nodeType":"UncheckedBlock","src":"3911:4002:16","statements":[{"assignments":[2638],"declarations":[{"constant":false,"id":2638,"mutability":"mutable","name":"prod0","nameLocation":"4240:5:16","nodeType":"VariableDeclaration","scope":2749,"src":"4232:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2637,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2642,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2639,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"4248:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2640,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2630,"src":"4252:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4232:21:16"},{"assignments":[2644],"declarations":[{"constant":false,"id":2644,"mutability":"mutable","name":"prod1","nameLocation":"4320:5:16","nodeType":"VariableDeclaration","scope":2749,"src":"4312:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2643,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2645,"nodeType":"VariableDeclarationStatement","src":"4312:13:16"},{"AST":{"nodeType":"YulBlock","src":"4392:122:16","statements":[{"nodeType":"YulVariableDeclaration","src":"4410:30:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4427:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"4430:1:16"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4437:1:16","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4433:3:16"},"nodeType":"YulFunctionCall","src":"4433:6:16"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"4420:6:16"},"nodeType":"YulFunctionCall","src":"4420:20:16"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"4414:2:16","type":""}]},{"nodeType":"YulAssignment","src":"4457:43:16","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"4474:2:16"},{"name":"prod0","nodeType":"YulIdentifier","src":"4478:5:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4470:3:16"},"nodeType":"YulFunctionCall","src":"4470:14:16"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"4489:2:16"},{"name":"prod0","nodeType":"YulIdentifier","src":"4493:5:16"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4486:2:16"},"nodeType":"YulFunctionCall","src":"4486:13:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4466:3:16"},"nodeType":"YulFunctionCall","src":"4466:34:16"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"4457:5:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2638,"isOffset":false,"isSlot":false,"src":"4478:5:16","valueSize":1},{"declaration":2638,"isOffset":false,"isSlot":false,"src":"4493:5:16","valueSize":1},{"declaration":2644,"isOffset":false,"isSlot":false,"src":"4457:5:16","valueSize":1},{"declaration":2628,"isOffset":false,"isSlot":false,"src":"4427:1:16","valueSize":1},{"declaration":2630,"isOffset":false,"isSlot":false,"src":"4430:1:16","valueSize":1}],"id":2646,"nodeType":"InlineAssembly","src":"4383:131:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2647,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"4595:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4595:10:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2655,"nodeType":"IfStatement","src":"4591:368:16","trueBody":{"id":2654,"nodeType":"Block","src":"4607:352:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2650,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2638,"src":"4925:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2651,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"4933:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2636,"id":2653,"nodeType":"Return","src":"4918:26:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2656,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"5065:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":2657,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"5080:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:20:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2663,"nodeType":"IfStatement","src":"5061:88:16","trueBody":{"id":2662,"nodeType":"Block","src":"5087:62:16","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2659,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2369,"src":"5112:20:16","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:22:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2661,"nodeType":"RevertStatement","src":"5105:29:16"}]}},{"assignments":[2665],"declarations":[{"constant":false,"id":2665,"mutability":"mutable","name":"remainder","nameLocation":"5412:9:16","nodeType":"VariableDeclaration","scope":2749,"src":"5404:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2664,"name":"uint256","nodeType":"ElementaryTypeName","src":"5404:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2666,"nodeType":"VariableDeclarationStatement","src":"5404:17:16"},{"AST":{"nodeType":"YulBlock","src":"5444:291:16","statements":[{"nodeType":"YulAssignment","src":"5513:38:16","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5533:1:16"},{"name":"y","nodeType":"YulIdentifier","src":"5536:1:16"},{"name":"denominator","nodeType":"YulIdentifier","src":"5539:11:16"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"5526:6:16"},"nodeType":"YulFunctionCall","src":"5526:25:16"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"5513:9:16"}]},{"nodeType":"YulAssignment","src":"5633:41:16","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"5646:5:16"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"5656:9:16"},{"name":"prod0","nodeType":"YulIdentifier","src":"5667:5:16"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5653:2:16"},"nodeType":"YulFunctionCall","src":"5653:20:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5642:3:16"},"nodeType":"YulFunctionCall","src":"5642:32:16"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"5633:5:16"}]},{"nodeType":"YulAssignment","src":"5691:30:16","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"5704:5:16"},{"name":"remainder","nodeType":"YulIdentifier","src":"5711:9:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5700:3:16"},"nodeType":"YulFunctionCall","src":"5700:21:16"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"5691:5:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2632,"isOffset":false,"isSlot":false,"src":"5539:11:16","valueSize":1},{"declaration":2638,"isOffset":false,"isSlot":false,"src":"5667:5:16","valueSize":1},{"declaration":2638,"isOffset":false,"isSlot":false,"src":"5691:5:16","valueSize":1},{"declaration":2638,"isOffset":false,"isSlot":false,"src":"5704:5:16","valueSize":1},{"declaration":2644,"isOffset":false,"isSlot":false,"src":"5633:5:16","valueSize":1},{"declaration":2644,"isOffset":false,"isSlot":false,"src":"5646:5:16","valueSize":1},{"declaration":2665,"isOffset":false,"isSlot":false,"src":"5513:9:16","valueSize":1},{"declaration":2665,"isOffset":false,"isSlot":false,"src":"5656:9:16","valueSize":1},{"declaration":2665,"isOffset":false,"isSlot":false,"src":"5711:9:16","valueSize":1},{"declaration":2628,"isOffset":false,"isSlot":false,"src":"5533:1:16","valueSize":1},{"declaration":2630,"isOffset":false,"isSlot":false,"src":"5536:1:16","valueSize":1}],"id":2667,"nodeType":"InlineAssembly","src":"5435:300:16"},{"assignments":[2669],"declarations":[{"constant":false,"id":2669,"mutability":"mutable","name":"twos","nameLocation":"5947:4:16","nodeType":"VariableDeclaration","scope":2749,"src":"5939:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2668,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2676,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2670,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"5954:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":2671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2672,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"5973:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5969:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2674,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5968:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5954:31:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:46:16"},{"AST":{"nodeType":"YulBlock","src":"6008:362:16","statements":[{"nodeType":"YulAssignment","src":"6073:37:16","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"6092:11:16"},{"name":"twos","nodeType":"YulIdentifier","src":"6105:4:16"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6088:3:16"},"nodeType":"YulFunctionCall","src":"6088:22:16"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"6073:11:16"}]},{"nodeType":"YulAssignment","src":"6177:25:16","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"6190:5:16"},{"name":"twos","nodeType":"YulIdentifier","src":"6197:4:16"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6186:3:16"},"nodeType":"YulFunctionCall","src":"6186:16:16"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"6177:5:16"}]},{"nodeType":"YulAssignment","src":"6317:39:16","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6337:1:16","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"6340:4:16"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6333:3:16"},"nodeType":"YulFunctionCall","src":"6333:12:16"},{"name":"twos","nodeType":"YulIdentifier","src":"6347:4:16"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6329:3:16"},"nodeType":"YulFunctionCall","src":"6329:23:16"},{"kind":"number","nodeType":"YulLiteral","src":"6354:1:16","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6325:3:16"},"nodeType":"YulFunctionCall","src":"6325:31:16"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"6317:4:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2632,"isOffset":false,"isSlot":false,"src":"6073:11:16","valueSize":1},{"declaration":2632,"isOffset":false,"isSlot":false,"src":"6092:11:16","valueSize":1},{"declaration":2638,"isOffset":false,"isSlot":false,"src":"6177:5:16","valueSize":1},{"declaration":2638,"isOffset":false,"isSlot":false,"src":"6190:5:16","valueSize":1},{"declaration":2669,"isOffset":false,"isSlot":false,"src":"6105:4:16","valueSize":1},{"declaration":2669,"isOffset":false,"isSlot":false,"src":"6197:4:16","valueSize":1},{"declaration":2669,"isOffset":false,"isSlot":false,"src":"6317:4:16","valueSize":1},{"declaration":2669,"isOffset":false,"isSlot":false,"src":"6340:4:16","valueSize":1},{"declaration":2669,"isOffset":false,"isSlot":false,"src":"6347:4:16","valueSize":1}],"id":2677,"nodeType":"InlineAssembly","src":"5999:371:16"},{"expression":{"id":2682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2678,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2638,"src":"6436:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2679,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"6445:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2680,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"6453:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6445:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2683,"nodeType":"ExpressionStatement","src":"6436:21:16"},{"assignments":[2685],"declarations":[{"constant":false,"id":2685,"mutability":"mutable","name":"inverse","nameLocation":"6783:7:16","nodeType":"VariableDeclaration","scope":2749,"src":"6775:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2684,"name":"uint256","nodeType":"ElementaryTypeName","src":"6775:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2692,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6794:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2687,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"6798:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6794:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2689,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6793:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":2690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6793:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6775:39:16"},{"expression":{"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2693,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7031:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2695,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"7046:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2696,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7060:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7046:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7042:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2700,"nodeType":"ExpressionStatement","src":"7031:36:16"},{"expression":{"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2701,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7100:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2703,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"7115:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2704,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7129:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7111:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7100:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2708,"nodeType":"ExpressionStatement","src":"7100:36:16"},{"expression":{"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2709,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7170:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7181:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2711,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"7185:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2712,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7199:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7185:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7170:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2716,"nodeType":"ExpressionStatement","src":"7170:36:16"},{"expression":{"id":2723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2717,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7240:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2719,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"7255:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2720,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7269:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7255:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7251:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7240:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2724,"nodeType":"ExpressionStatement","src":"7240:36:16"},{"expression":{"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2725,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7310:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2727,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"7325:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2728,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7339:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7325:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7321:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7310:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2732,"nodeType":"ExpressionStatement","src":"7310:36:16"},{"expression":{"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2733,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7381:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7392:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2735,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"7396:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2736,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7410:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7392:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7381:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2740,"nodeType":"ExpressionStatement","src":"7381:36:16"},{"expression":{"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2741,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"7851:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2742,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2638,"src":"7860:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2743,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"7868:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7851:24:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2746,"nodeType":"ExpressionStatement","src":"7851:24:16"},{"expression":{"id":2747,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"7896:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2636,"id":2748,"nodeType":"Return","src":"7889:13:16"}]}]},"documentation":{"id":2626,"nodeType":"StructuredDocumentation","src":"3485:313:16","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."},"id":2751,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"3812:6:16","nodeType":"FunctionDefinition","parameters":{"id":2633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2628,"mutability":"mutable","name":"x","nameLocation":"3827:1:16","nodeType":"VariableDeclaration","scope":2751,"src":"3819:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2627,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2630,"mutability":"mutable","name":"y","nameLocation":"3838:1:16","nodeType":"VariableDeclaration","scope":2751,"src":"3830:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2629,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2632,"mutability":"mutable","name":"denominator","nameLocation":"3849:11:16","nodeType":"VariableDeclaration","scope":2751,"src":"3841:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2631,"name":"uint256","nodeType":"ElementaryTypeName","src":"3841:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3818:43:16"},"returnParameters":{"id":2636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2635,"mutability":"mutable","name":"result","nameLocation":"3893:6:16","nodeType":"VariableDeclaration","scope":2751,"src":"3885:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2634,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3884:16:16"},"scope":3417,"src":"3803:4116:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2793,"nodeType":"Block","src":"8161:192:16","statements":[{"assignments":[2767],"declarations":[{"constant":false,"id":2767,"mutability":"mutable","name":"result","nameLocation":"8179:6:16","nodeType":"VariableDeclaration","scope":2793,"src":"8171:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2766,"name":"uint256","nodeType":"ElementaryTypeName","src":"8171:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2773,"initialValue":{"arguments":[{"id":2769,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2754,"src":"8195:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2770,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"8198:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2771,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"8201:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2768,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2751,2794],"referencedDeclaration":2751,"src":"8188:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8171:42:16"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2775,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"8244:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}],"id":2774,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"8227:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2374_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2778,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2754,"src":"8264:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2779,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2756,"src":"8267:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2780,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"8270:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2777,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"8257:6:16","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8285:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8257:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8227:59:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2790,"nodeType":"IfStatement","src":"8223:101:16","trueBody":{"id":2789,"nodeType":"Block","src":"8288:36:16","statements":[{"expression":{"id":2787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2785,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2767,"src":"8302:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8312:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2788,"nodeType":"ExpressionStatement","src":"8302:11:16"}]}},{"expression":{"id":2791,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2767,"src":"8340:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2765,"id":2792,"nodeType":"Return","src":"8333:13:16"}]},"documentation":{"id":2752,"nodeType":"StructuredDocumentation","src":"7925:121:16","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2794,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"8060:6:16","nodeType":"FunctionDefinition","parameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2754,"mutability":"mutable","name":"x","nameLocation":"8075:1:16","nodeType":"VariableDeclaration","scope":2794,"src":"8067:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2753,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2756,"mutability":"mutable","name":"y","nameLocation":"8086:1:16","nodeType":"VariableDeclaration","scope":2794,"src":"8078:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2755,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2758,"mutability":"mutable","name":"denominator","nameLocation":"8097:11:16","nodeType":"VariableDeclaration","scope":2794,"src":"8089:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2757,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2761,"mutability":"mutable","name":"rounding","nameLocation":"8119:8:16","nodeType":"VariableDeclaration","scope":2794,"src":"8110:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"},"typeName":{"id":2760,"nodeType":"UserDefinedTypeName","pathNode":{"id":2759,"name":"Rounding","nameLocations":["8110:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":2374,"src":"8110:8:16"},"referencedDeclaration":2374,"src":"8110:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8066:62:16"},"returnParameters":{"id":2765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2794,"src":"8152:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2763,"name":"uint256","nodeType":"ElementaryTypeName","src":"8152:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8151:9:16"},"scope":3417,"src":"8051:302:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2905,"nodeType":"Block","src":"8644:1585:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2802,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"8658:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8658:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2808,"nodeType":"IfStatement","src":"8654:45:16","trueBody":{"id":2807,"nodeType":"Block","src":"8666:33:16","statements":[{"expression":{"hexValue":"30","id":2805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2801,"id":2806,"nodeType":"Return","src":"8680:8:16"}]}},{"assignments":[2810],"declarations":[{"constant":false,"id":2810,"mutability":"mutable","name":"result","nameLocation":"9386:6:16","nodeType":"VariableDeclaration","scope":2905,"src":"9378:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2809,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2819,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9395:1:16","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":2816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2813,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"9406:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2812,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3073,3108],"referencedDeclaration":3073,"src":"9401:4:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:7:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9401:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9400:14:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9395:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9378:36:16"},{"id":2904,"nodeType":"UncheckedBlock","src":"9815:408:16","statements":[{"expression":{"id":2829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2820,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9839:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2821,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9849:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2822,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"9858:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2823,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9862:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9848:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9848:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:35:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2830,"nodeType":"ExpressionStatement","src":"9839:35:16"},{"expression":{"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2831,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9888:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2832,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9898:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2833,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"9907:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2834,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9911:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9907:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9898:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2837,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9897:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9922:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9897:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9888:35:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2841,"nodeType":"ExpressionStatement","src":"9888:35:16"},{"expression":{"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2842,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9937:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2843,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9947:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2844,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"9956:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2845,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9960:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9956:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2848,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9946:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9971:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:35:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2852,"nodeType":"ExpressionStatement","src":"9937:35:16"},{"expression":{"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9986:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2854,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"9996:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2855,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"10005:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2856,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10009:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10005:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9996:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9995:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10020:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9995:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:35:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2863,"nodeType":"ExpressionStatement","src":"9986:35:16"},{"expression":{"id":2873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2864,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10035:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2865,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10045:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2866,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"10054:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2867,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10058:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10054:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2870,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10044:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10069:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10044:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10035:35:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2874,"nodeType":"ExpressionStatement","src":"10035:35:16"},{"expression":{"id":2884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2875,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10084:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2876,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10094:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2877,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"10103:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2878,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10107:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10094:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2881,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10093:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10118:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10093:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:35:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2885,"nodeType":"ExpressionStatement","src":"10084:35:16"},{"expression":{"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2886,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10133:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2887,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10143:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2888,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"10152:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2889,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10156:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10152:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2892,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10142:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10142:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10133:35:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2896,"nodeType":"ExpressionStatement","src":"10133:35:16"},{"expression":{"arguments":[{"id":2898,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10193:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2899,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"10201:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2900,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2810,"src":"10205:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10201:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2897,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"10189:3:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:23:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2801,"id":2903,"nodeType":"Return","src":"10182:30:16"}]}]},"documentation":{"id":2795,"nodeType":"StructuredDocumentation","src":"8359:223:16","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)."},"id":2906,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:16","nodeType":"FunctionDefinition","parameters":{"id":2798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2797,"mutability":"mutable","name":"a","nameLocation":"8609:1:16","nodeType":"VariableDeclaration","scope":2906,"src":"8601:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2796,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:11:16"},"returnParameters":{"id":2801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2800,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2906,"src":"8635:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8634:9:16"},"scope":3417,"src":"8587:1642:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2940,"nodeType":"Block","src":"10405:164:16","statements":[{"id":2939,"nodeType":"UncheckedBlock","src":"10415:148:16","statements":[{"assignments":[2918],"declarations":[{"constant":false,"id":2918,"mutability":"mutable","name":"result","nameLocation":"10447:6:16","nodeType":"VariableDeclaration","scope":2939,"src":"10439:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2917,"name":"uint256","nodeType":"ElementaryTypeName","src":"10439:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2922,"initialValue":{"arguments":[{"id":2920,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2909,"src":"10461:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2919,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2906,2941],"referencedDeclaration":2906,"src":"10456:4:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:7:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10439:24:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2923,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"10484:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2925,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"10511:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}],"id":2924,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"10494:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2374_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":2926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10494:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2927,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"10524:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2928,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"10533:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2930,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2909,"src":"10542:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:19:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:49:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10494:57:16","trueExpression":{"hexValue":"31","id":2933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10493:59:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10484:68:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2916,"id":2938,"nodeType":"Return","src":"10477:75:16"}]}]},"documentation":{"id":2907,"nodeType":"StructuredDocumentation","src":"10235:89:16","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2941,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"10338:4:16","nodeType":"FunctionDefinition","parameters":{"id":2913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2909,"mutability":"mutable","name":"a","nameLocation":"10351:1:16","nodeType":"VariableDeclaration","scope":2941,"src":"10343:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2908,"name":"uint256","nodeType":"ElementaryTypeName","src":"10343:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2912,"mutability":"mutable","name":"rounding","nameLocation":"10363:8:16","nodeType":"VariableDeclaration","scope":2941,"src":"10354:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"},"typeName":{"id":2911,"nodeType":"UserDefinedTypeName","pathNode":{"id":2910,"name":"Rounding","nameLocations":["10354:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":2374,"src":"10354:8:16"},"referencedDeclaration":2374,"src":"10354:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10342:30:16"},"returnParameters":{"id":2916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2915,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2941,"src":"10396:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2914,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10395:9:16"},"scope":3417,"src":"10329:240:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3072,"nodeType":"Block","src":"10760:922:16","statements":[{"assignments":[2950],"declarations":[{"constant":false,"id":2950,"mutability":"mutable","name":"result","nameLocation":"10778:6:16","nodeType":"VariableDeclaration","scope":3072,"src":"10770:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2949,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2952,"initialValue":{"hexValue":"30","id":2951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10770:18:16"},{"id":3069,"nodeType":"UncheckedBlock","src":"10798:855:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"10826:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10835:3:16","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10826:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10826:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2967,"nodeType":"IfStatement","src":"10822:99:16","trueBody":{"id":2966,"nodeType":"Block","src":"10844:77:16","statements":[{"expression":{"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2958,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"10862:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10872:3:16","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10862:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2961,"nodeType":"ExpressionStatement","src":"10862:13:16"},{"expression":{"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2962,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"10893:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:3:16","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10893:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2965,"nodeType":"ExpressionStatement","src":"10893:13:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2968,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"10938:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10938:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10952:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10938:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2982,"nodeType":"IfStatement","src":"10934:96:16","trueBody":{"id":2981,"nodeType":"Block","src":"10955:75:16","statements":[{"expression":{"id":2975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"10973:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10983:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10973:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2976,"nodeType":"ExpressionStatement","src":"10973:12:16"},{"expression":{"id":2979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2977,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"11003:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11013:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11003:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2980,"nodeType":"ExpressionStatement","src":"11003:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2983,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11047:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11056:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11047:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11061:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11047:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2997,"nodeType":"IfStatement","src":"11043:96:16","trueBody":{"id":2996,"nodeType":"Block","src":"11064:75:16","statements":[{"expression":{"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2988,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11082:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11092:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11082:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2991,"nodeType":"ExpressionStatement","src":"11082:12:16"},{"expression":{"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2992,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"11112:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11112:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2995,"nodeType":"ExpressionStatement","src":"11112:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2998,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11156:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11156:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11156:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3012,"nodeType":"IfStatement","src":"11152:96:16","trueBody":{"id":3011,"nodeType":"Block","src":"11173:75:16","statements":[{"expression":{"id":3005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11191:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11191:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3006,"nodeType":"ExpressionStatement","src":"11191:12:16"},{"expression":{"id":3009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3007,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"11221:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11231:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11221:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3010,"nodeType":"ExpressionStatement","src":"11221:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3013,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11265:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11274:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11265:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11278:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11265:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3027,"nodeType":"IfStatement","src":"11261:93:16","trueBody":{"id":3026,"nodeType":"Block","src":"11281:73:16","statements":[{"expression":{"id":3020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11299:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":3019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11309:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11299:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3021,"nodeType":"ExpressionStatement","src":"11299:11:16"},{"expression":{"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3022,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"11328:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11338:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11328:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3025,"nodeType":"ExpressionStatement","src":"11328:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3028,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11371:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":3029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11380:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11371:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11384:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11371:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3042,"nodeType":"IfStatement","src":"11367:93:16","trueBody":{"id":3041,"nodeType":"Block","src":"11387:73:16","statements":[{"expression":{"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3033,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11405:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":3034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11415:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11405:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3036,"nodeType":"ExpressionStatement","src":"11405:11:16"},{"expression":{"id":3039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3037,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"11434:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11444:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11434:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3040,"nodeType":"ExpressionStatement","src":"11434:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11477:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11477:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11490:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11477:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3057,"nodeType":"IfStatement","src":"11473:93:16","trueBody":{"id":3056,"nodeType":"Block","src":"11493:73:16","statements":[{"expression":{"id":3050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3048,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11511:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":3049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11521:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11511:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3051,"nodeType":"ExpressionStatement","src":"11511:11:16"},{"expression":{"id":3054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3052,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"11540:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11550:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11540:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3055,"nodeType":"ExpressionStatement","src":"11540:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3058,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11583:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11592:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11583:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11583:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3068,"nodeType":"IfStatement","src":"11579:64:16","trueBody":{"id":3067,"nodeType":"Block","src":"11599:44:16","statements":[{"expression":{"id":3065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"11617:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11627:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11617:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3066,"nodeType":"ExpressionStatement","src":"11617:11:16"}]}}]},{"expression":{"id":3070,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2950,"src":"11669:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2948,"id":3071,"nodeType":"Return","src":"11662:13:16"}]},"documentation":{"id":2942,"nodeType":"StructuredDocumentation","src":"10575:119:16","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":3073,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"10708:4:16","nodeType":"FunctionDefinition","parameters":{"id":2945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2944,"mutability":"mutable","name":"value","nameLocation":"10721:5:16","nodeType":"VariableDeclaration","scope":3073,"src":"10713:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2943,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10712:15:16"},"returnParameters":{"id":2948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3073,"src":"10751:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2946,"name":"uint256","nodeType":"ElementaryTypeName","src":"10751:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:9:16"},"scope":3417,"src":"10699:983:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3107,"nodeType":"Block","src":"11915:168:16","statements":[{"id":3106,"nodeType":"UncheckedBlock","src":"11925:152:16","statements":[{"assignments":[3085],"declarations":[{"constant":false,"id":3085,"mutability":"mutable","name":"result","nameLocation":"11957:6:16","nodeType":"VariableDeclaration","scope":3106,"src":"11949:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3084,"name":"uint256","nodeType":"ElementaryTypeName","src":"11949:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3089,"initialValue":{"arguments":[{"id":3087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"11971:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3086,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3073,3108],"referencedDeclaration":3073,"src":"11966:4:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:11:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11949:28:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3090,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3085,"src":"11998:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3092,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3079,"src":"12025:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}],"id":3091,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"12008:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2374_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12008:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3095,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3085,"src":"12043:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3097,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"12052:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:19:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12008:49:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12064:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12008:57:16","trueExpression":{"hexValue":"31","id":3100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12060:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3103,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12007:59:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:68:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3083,"id":3105,"nodeType":"Return","src":"11991:75:16"}]}]},"documentation":{"id":3074,"nodeType":"StructuredDocumentation","src":"11688:142:16","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3108,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"11844:4:16","nodeType":"FunctionDefinition","parameters":{"id":3080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3076,"mutability":"mutable","name":"value","nameLocation":"11857:5:16","nodeType":"VariableDeclaration","scope":3108,"src":"11849:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3075,"name":"uint256","nodeType":"ElementaryTypeName","src":"11849:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3079,"mutability":"mutable","name":"rounding","nameLocation":"11873:8:16","nodeType":"VariableDeclaration","scope":3108,"src":"11864:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"},"typeName":{"id":3078,"nodeType":"UserDefinedTypeName","pathNode":{"id":3077,"name":"Rounding","nameLocations":["11864:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":2374,"src":"11864:8:16"},"referencedDeclaration":2374,"src":"11864:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11848:34:16"},"returnParameters":{"id":3083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3108,"src":"11906:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3081,"name":"uint256","nodeType":"ElementaryTypeName","src":"11906:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11905:9:16"},"scope":3417,"src":"11835:248:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3236,"nodeType":"Block","src":"12276:854:16","statements":[{"assignments":[3117],"declarations":[{"constant":false,"id":3117,"mutability":"mutable","name":"result","nameLocation":"12294:6:16","nodeType":"VariableDeclaration","scope":3236,"src":"12286:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3116,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3119,"initialValue":{"hexValue":"30","id":3118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12303:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12286:18:16"},{"id":3233,"nodeType":"UncheckedBlock","src":"12314:787:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3120,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12342:5:16","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":3123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12351:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12351:8:16","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12342:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3136,"nodeType":"IfStatement","src":"12338:103:16","trueBody":{"id":3135,"nodeType":"Block","src":"12361:80:16","statements":[{"expression":{"id":3129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12379:5:16","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":3128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12388:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12388:8:16","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12379:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3130,"nodeType":"ExpressionStatement","src":"12379:17:16"},{"expression":{"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3131,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"12414:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12424:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12414:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3134,"nodeType":"ExpressionStatement","src":"12414:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12458:5:16","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":3140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12467:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12473:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12467:8:16","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12458:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3153,"nodeType":"IfStatement","src":"12454:103:16","trueBody":{"id":3152,"nodeType":"Block","src":"12477:80:16","statements":[{"expression":{"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3142,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12495:5:16","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":3145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12504:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12510:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12504:8:16","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12495:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3147,"nodeType":"ExpressionStatement","src":"12495:17:16"},{"expression":{"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3148,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"12530:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3149,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12540:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12530:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3151,"nodeType":"ExpressionStatement","src":"12530:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3154,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12574:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12589:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12583:8:16","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12574:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3170,"nodeType":"IfStatement","src":"12570:103:16","trueBody":{"id":3169,"nodeType":"Block","src":"12593:80:16","statements":[{"expression":{"id":3163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3159,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12611:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12620:8:16","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12611:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3164,"nodeType":"ExpressionStatement","src":"12611:17:16"},{"expression":{"id":3167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3165,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"12646:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12646:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3168,"nodeType":"ExpressionStatement","src":"12646:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3171,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12690:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12699:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12699:7:16","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12690:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3187,"nodeType":"IfStatement","src":"12686:100:16","trueBody":{"id":3186,"nodeType":"Block","src":"12708:78:16","statements":[{"expression":{"id":3180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3176,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12726:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12735:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12735:7:16","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12726:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3181,"nodeType":"ExpressionStatement","src":"12726:16:16"},{"expression":{"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3182,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"12760:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12760:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3185,"nodeType":"ExpressionStatement","src":"12760:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3188,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12803:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12812:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12818:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12812:7:16","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12803:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3204,"nodeType":"IfStatement","src":"12799:100:16","trueBody":{"id":3203,"nodeType":"Block","src":"12821:78:16","statements":[{"expression":{"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3193,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12839:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12854:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12848:7:16","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12839:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3198,"nodeType":"ExpressionStatement","src":"12839:16:16"},{"expression":{"id":3201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"12873:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12873:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3202,"nodeType":"ExpressionStatement","src":"12873:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12916:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12931:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12925:7:16","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12916:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3221,"nodeType":"IfStatement","src":"12912:100:16","trueBody":{"id":3220,"nodeType":"Block","src":"12934:78:16","statements":[{"expression":{"id":3214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"12952:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12961:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12967:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12961:7:16","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12952:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3215,"nodeType":"ExpressionStatement","src":"12952:16:16"},{"expression":{"id":3218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3216,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"12986:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12996:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12986:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3219,"nodeType":"ExpressionStatement","src":"12986:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3222,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3111,"src":"13029:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":3225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13038:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":3224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13044:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13038:7:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"13029:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3232,"nodeType":"IfStatement","src":"13025:66:16","trueBody":{"id":3231,"nodeType":"Block","src":"13047:44:16","statements":[{"expression":{"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3227,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"13065:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13075:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13065:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3230,"nodeType":"ExpressionStatement","src":"13065:11:16"}]}}]},{"expression":{"id":3234,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"13117:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3115,"id":3235,"nodeType":"Return","src":"13110:13:16"}]},"documentation":{"id":3109,"nodeType":"StructuredDocumentation","src":"12089:120:16","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":3237,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"12223:5:16","nodeType":"FunctionDefinition","parameters":{"id":3112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3111,"mutability":"mutable","name":"value","nameLocation":"12237:5:16","nodeType":"VariableDeclaration","scope":3237,"src":"12229:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3110,"name":"uint256","nodeType":"ElementaryTypeName","src":"12229:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12228:15:16"},"returnParameters":{"id":3115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3237,"src":"12267:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3113,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12266:9:16"},"scope":3417,"src":"12214:916:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3271,"nodeType":"Block","src":"13365:170:16","statements":[{"id":3270,"nodeType":"UncheckedBlock","src":"13375:154:16","statements":[{"assignments":[3249],"declarations":[{"constant":false,"id":3249,"mutability":"mutable","name":"result","nameLocation":"13407:6:16","nodeType":"VariableDeclaration","scope":3270,"src":"13399:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3248,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3253,"initialValue":{"arguments":[{"id":3251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"13422:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3250,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[3237,3272],"referencedDeclaration":3237,"src":"13416:5:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13399:29:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3254,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"13449:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3256,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"13476:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}],"id":3255,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"13459:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2374_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":3259,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"13495:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3261,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"13504:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:20:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13459:50:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13459:58:16","trueExpression":{"hexValue":"31","id":3264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13512:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3267,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13458:60:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13449:69:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3247,"id":3269,"nodeType":"Return","src":"13442:76:16"}]}]},"documentation":{"id":3238,"nodeType":"StructuredDocumentation","src":"13136:143:16","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3272,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"13293:5:16","nodeType":"FunctionDefinition","parameters":{"id":3244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3240,"mutability":"mutable","name":"value","nameLocation":"13307:5:16","nodeType":"VariableDeclaration","scope":3272,"src":"13299:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3239,"name":"uint256","nodeType":"ElementaryTypeName","src":"13299:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3243,"mutability":"mutable","name":"rounding","nameLocation":"13323:8:16","nodeType":"VariableDeclaration","scope":3272,"src":"13314:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"},"typeName":{"id":3242,"nodeType":"UserDefinedTypeName","pathNode":{"id":3241,"name":"Rounding","nameLocations":["13314:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":2374,"src":"13314:8:16"},"referencedDeclaration":2374,"src":"13314:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"13298:34:16"},"returnParameters":{"id":3247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3272,"src":"13356:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3245,"name":"uint256","nodeType":"ElementaryTypeName","src":"13356:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13355:9:16"},"scope":3417,"src":"13284:251:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3358,"nodeType":"Block","src":"13855:600:16","statements":[{"assignments":[3281],"declarations":[{"constant":false,"id":3281,"mutability":"mutable","name":"result","nameLocation":"13873:6:16","nodeType":"VariableDeclaration","scope":3358,"src":"13865:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3280,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3283,"initialValue":{"hexValue":"30","id":3282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13882:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13865:18:16"},{"id":3355,"nodeType":"UncheckedBlock","src":"13893:533:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"13921:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13930:3:16","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13921:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13936:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13921:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3298,"nodeType":"IfStatement","src":"13917:98:16","trueBody":{"id":3297,"nodeType":"Block","src":"13939:76:16","statements":[{"expression":{"id":3291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3289,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"13957:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13967:3:16","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13957:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3292,"nodeType":"ExpressionStatement","src":"13957:13:16"},{"expression":{"id":3295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3293,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"13988:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13988:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3296,"nodeType":"ExpressionStatement","src":"13988:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"14032:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14032:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14032:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3313,"nodeType":"IfStatement","src":"14028:95:16","trueBody":{"id":3312,"nodeType":"Block","src":"14049:74:16","statements":[{"expression":{"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3304,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"14067:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14077:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14067:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3307,"nodeType":"ExpressionStatement","src":"14067:12:16"},{"expression":{"id":3310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3308,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"14097:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14107:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14097:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3311,"nodeType":"ExpressionStatement","src":"14097:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3314,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"14140:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14140:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14154:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14140:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3328,"nodeType":"IfStatement","src":"14136:95:16","trueBody":{"id":3327,"nodeType":"Block","src":"14157:74:16","statements":[{"expression":{"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3319,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"14175:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14175:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3322,"nodeType":"ExpressionStatement","src":"14175:12:16"},{"expression":{"id":3325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3323,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"14205:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14215:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14205:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3326,"nodeType":"ExpressionStatement","src":"14205:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"14248:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14257:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14248:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14262:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14248:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3343,"nodeType":"IfStatement","src":"14244:95:16","trueBody":{"id":3342,"nodeType":"Block","src":"14265:74:16","statements":[{"expression":{"id":3336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3334,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"14283:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14293:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14283:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3337,"nodeType":"ExpressionStatement","src":"14283:12:16"},{"expression":{"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3338,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"14313:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14323:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14313:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3341,"nodeType":"ExpressionStatement","src":"14313:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3344,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"14356:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14365:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14356:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14369:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14356:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3354,"nodeType":"IfStatement","src":"14352:64:16","trueBody":{"id":3353,"nodeType":"Block","src":"14372:44:16","statements":[{"expression":{"id":3351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3349,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"14390:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14400:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14390:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3352,"nodeType":"ExpressionStatement","src":"14390:11:16"}]}}]},{"expression":{"id":3356,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3281,"src":"14442:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3279,"id":3357,"nodeType":"Return","src":"14435:13:16"}]},"documentation":{"id":3273,"nodeType":"StructuredDocumentation","src":"13541:246:16","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."},"id":3359,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"13801:6:16","nodeType":"FunctionDefinition","parameters":{"id":3276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3275,"mutability":"mutable","name":"value","nameLocation":"13816:5:16","nodeType":"VariableDeclaration","scope":3359,"src":"13808:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3274,"name":"uint256","nodeType":"ElementaryTypeName","src":"13808:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13807:15:16"},"returnParameters":{"id":3279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3278,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3359,"src":"13846:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3277,"name":"uint256","nodeType":"ElementaryTypeName","src":"13846:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13845:9:16"},"scope":3417,"src":"13792:663:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3396,"nodeType":"Block","src":"14692:177:16","statements":[{"id":3395,"nodeType":"UncheckedBlock","src":"14702:161:16","statements":[{"assignments":[3371],"declarations":[{"constant":false,"id":3371,"mutability":"mutable","name":"result","nameLocation":"14734:6:16","nodeType":"VariableDeclaration","scope":3395,"src":"14726:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3370,"name":"uint256","nodeType":"ElementaryTypeName","src":"14726:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3375,"initialValue":{"arguments":[{"id":3373,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"14750:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3372,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[3359,3397],"referencedDeclaration":3359,"src":"14743:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14726:30:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3376,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"14777:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3378,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3365,"src":"14804:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}],"id":3377,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"14787:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2374_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14787:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14817:1:16","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":3383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3381,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"14823:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":3382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14833:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"14823:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14822:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"14838:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:26:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14787:56:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14850:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14787:64:16","trueExpression":{"hexValue":"31","id":3389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14846:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3392,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14786:66:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14777:75:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3369,"id":3394,"nodeType":"Return","src":"14770:82:16"}]}]},"documentation":{"id":3360,"nodeType":"StructuredDocumentation","src":"14461:144:16","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3397,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"14619:6:16","nodeType":"FunctionDefinition","parameters":{"id":3366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3362,"mutability":"mutable","name":"value","nameLocation":"14634:5:16","nodeType":"VariableDeclaration","scope":3397,"src":"14626:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3361,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3365,"mutability":"mutable","name":"rounding","nameLocation":"14650:8:16","nodeType":"VariableDeclaration","scope":3397,"src":"14641:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"},"typeName":{"id":3364,"nodeType":"UserDefinedTypeName","pathNode":{"id":3363,"name":"Rounding","nameLocations":["14641:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":2374,"src":"14641:8:16"},"referencedDeclaration":2374,"src":"14641:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"14625:34:16"},"returnParameters":{"id":3369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3368,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3397,"src":"14683:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3367,"name":"uint256","nodeType":"ElementaryTypeName","src":"14683:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14682:9:16"},"scope":3417,"src":"14610:259:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3415,"nodeType":"Block","src":"15067:48:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3408,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"15090:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}],"id":3407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15084:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3406,"name":"uint8","nodeType":"ElementaryTypeName","src":"15084:5:16","typeDescriptions":{}}},"id":3409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:15:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":3410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15102:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15084:19:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15084:24:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3405,"id":3414,"nodeType":"Return","src":"15077:31:16"}]},"documentation":{"id":3398,"nodeType":"StructuredDocumentation","src":"14875:113:16","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":3416,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"15002:16:16","nodeType":"FunctionDefinition","parameters":{"id":3402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3401,"mutability":"mutable","name":"rounding","nameLocation":"15028:8:16","nodeType":"VariableDeclaration","scope":3416,"src":"15019:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"},"typeName":{"id":3400,"nodeType":"UserDefinedTypeName","pathNode":{"id":3399,"name":"Rounding","nameLocations":["15019:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":2374,"src":"15019:8:16"},"referencedDeclaration":2374,"src":"15019:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2374","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15018:19:16"},"returnParameters":{"id":3405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3416,"src":"15061:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3403,"name":"bool","nodeType":"ElementaryTypeName","src":"15061:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15060:6:16"},"scope":3417,"src":"14993:122:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3418,"src":"203:14914:16","usedErrors":[2369],"usedEvents":[]}],"src":"103:15015:16"},"id":16},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[3522]},"id":3523,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3419,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":3420,"nodeType":"StructuredDocumentation","src":"135:80:17","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3522,"linearizedBaseContracts":[3522],"name":"SignedMath","nameLocation":"224:10:17","nodeType":"ContractDefinition","nodes":[{"body":{"id":3437,"nodeType":"Block","src":"376:37:17","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3430,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3423,"src":"393:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3431,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"397:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"393:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3434,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"405:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"393:13:17","trueExpression":{"id":3433,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3423,"src":"401:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3429,"id":3436,"nodeType":"Return","src":"386:20:17"}]},"documentation":{"id":3421,"nodeType":"StructuredDocumentation","src":"241:66:17","text":" @dev Returns the largest of two signed numbers."},"id":3438,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"321:3:17","nodeType":"FunctionDefinition","parameters":{"id":3426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3423,"mutability":"mutable","name":"a","nameLocation":"332:1:17","nodeType":"VariableDeclaration","scope":3438,"src":"325:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3422,"name":"int256","nodeType":"ElementaryTypeName","src":"325:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3425,"mutability":"mutable","name":"b","nameLocation":"342:1:17","nodeType":"VariableDeclaration","scope":3438,"src":"335:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3424,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"324:20:17"},"returnParameters":{"id":3429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3438,"src":"368:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3427,"name":"int256","nodeType":"ElementaryTypeName","src":"368:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"367:8:17"},"scope":3522,"src":"312:101:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3455,"nodeType":"Block","src":"555:37:17","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3448,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3441,"src":"572:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3449,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3443,"src":"576:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"572:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3452,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3443,"src":"584:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"572:13:17","trueExpression":{"id":3451,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3441,"src":"580:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3447,"id":3454,"nodeType":"Return","src":"565:20:17"}]},"documentation":{"id":3439,"nodeType":"StructuredDocumentation","src":"419:67:17","text":" @dev Returns the smallest of two signed numbers."},"id":3456,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"500:3:17","nodeType":"FunctionDefinition","parameters":{"id":3444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3441,"mutability":"mutable","name":"a","nameLocation":"511:1:17","nodeType":"VariableDeclaration","scope":3456,"src":"504:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3440,"name":"int256","nodeType":"ElementaryTypeName","src":"504:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3443,"mutability":"mutable","name":"b","nameLocation":"521:1:17","nodeType":"VariableDeclaration","scope":3456,"src":"514:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3442,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"503:20:17"},"returnParameters":{"id":3447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3456,"src":"547:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3445,"name":"int256","nodeType":"ElementaryTypeName","src":"547:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"546:8:17"},"scope":3522,"src":"491:101:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3499,"nodeType":"Block","src":"797:162:17","statements":[{"assignments":[3467],"declarations":[{"constant":false,"id":3467,"mutability":"mutable","name":"x","nameLocation":"866:1:17","nodeType":"VariableDeclaration","scope":3499,"src":"859:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3466,"name":"int256","nodeType":"ElementaryTypeName","src":"859:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3480,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3468,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"871:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3469,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"875:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"871:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3471,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"870:7:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3472,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"882:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3473,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"886:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"882:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3475,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"881:7:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"892:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"881:12:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3478,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:14:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:24:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"859:35:17"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3481,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"911:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3486,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"931:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"923:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3484,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:17","typeDescriptions":{}}},"id":3487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":3488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"937:3:17","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"923:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"916:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":3482,"name":"int256","nodeType":"ElementaryTypeName","src":"916:6:17","typeDescriptions":{}}},"id":3490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3491,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"945:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3492,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3461,"src":"949:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"945:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3494,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"944:7:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"916:35:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3496,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"915:37:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"911:41:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3465,"id":3498,"nodeType":"Return","src":"904:48:17"}]},"documentation":{"id":3457,"nodeType":"StructuredDocumentation","src":"598:126:17","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":3500,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"738:7:17","nodeType":"FunctionDefinition","parameters":{"id":3462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3459,"mutability":"mutable","name":"a","nameLocation":"753:1:17","nodeType":"VariableDeclaration","scope":3500,"src":"746:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3458,"name":"int256","nodeType":"ElementaryTypeName","src":"746:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3461,"mutability":"mutable","name":"b","nameLocation":"763:1:17","nodeType":"VariableDeclaration","scope":3500,"src":"756:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3460,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"745:20:17"},"returnParameters":{"id":3465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3464,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3500,"src":"789:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3463,"name":"int256","nodeType":"ElementaryTypeName","src":"789:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"788:8:17"},"scope":3522,"src":"729:230:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3520,"nodeType":"Block","src":"1103:158:17","statements":[{"id":3519,"nodeType":"UncheckedBlock","src":"1113:142:17","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3510,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3503,"src":"1228:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1228:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1241:2:17","subExpression":{"id":3514,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3503,"src":"1242:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1228:15:17","trueExpression":{"id":3513,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3503,"src":"1237:1:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1220:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3508,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:17","typeDescriptions":{}}},"id":3517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:24:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3507,"id":3518,"nodeType":"Return","src":"1213:31:17"}]}]},"documentation":{"id":3501,"nodeType":"StructuredDocumentation","src":"965:78:17","text":" @dev Returns the absolute unsigned value of a signed value."},"id":3521,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1057:3:17","nodeType":"FunctionDefinition","parameters":{"id":3504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3503,"mutability":"mutable","name":"n","nameLocation":"1068:1:17","nodeType":"VariableDeclaration","scope":3521,"src":"1061:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3502,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1060:10:17"},"returnParameters":{"id":3507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3506,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3521,"src":"1094:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3505,"name":"uint256","nodeType":"ElementaryTypeName","src":"1094:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1093:9:17"},"scope":3522,"src":"1048:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3523,"src":"216:1047:17","usedErrors":[],"usedEvents":[]}],"src":"109:1155:17"},"id":17},"contracts/business/BusinessContractExample.sol":{"ast":{"absolutePath":"contracts/business/BusinessContractExample.sol","exportedSymbols":{"AccessControlUpgradeable":[362],"BusinessContractExample":[3645],"ContextUpgradeable":[844],"EIP712Upgradeable":[1188],"ERC165Upgradeable":[1228],"ERC1967Utils":[1649],"IAccessControl":[1311],"IBusinessContract":[3542],"IERC1822Proxiable":[1346],"IERC5267":[1336],"Initializable":[616],"MessageHashUtils":[2351],"UUPSUpgradeable":[798]},"id":3646,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3524,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:18"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":3525,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3646,"sourceUnit":617,"src":"58:75:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":3526,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3646,"sourceUnit":799,"src":"134:77:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","id":3527,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3646,"sourceUnit":363,"src":"212:81:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","id":3528,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3646,"sourceUnit":1189,"src":"294:86:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IBusinessContract","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3542,"linearizedBaseContracts":[3542],"name":"IBusinessContract","nameLocation":"392:17:18","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e09ee870","id":3541,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"425:4:18","nodeType":"FunctionDefinition","parameters":{"id":3537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3530,"mutability":"mutable","name":"from_chain_id","nameLocation":"438:13:18","nodeType":"VariableDeclaration","scope":3541,"src":"430:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3529,"name":"uint256","nodeType":"ElementaryTypeName","src":"430:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3532,"mutability":"mutable","name":"from_id","nameLocation":"461:7:18","nodeType":"VariableDeclaration","scope":3541,"src":"453:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3531,"name":"uint256","nodeType":"ElementaryTypeName","src":"453:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3534,"mutability":"mutable","name":"from_sender","nameLocation":"478:11:18","nodeType":"VariableDeclaration","scope":3541,"src":"470:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3533,"name":"address","nodeType":"ElementaryTypeName","src":"470:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3536,"mutability":"mutable","name":"data","nameLocation":"506:4:18","nodeType":"VariableDeclaration","scope":3541,"src":"491:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3535,"name":"bytes","nodeType":"ElementaryTypeName","src":"491:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"429:82:18"},"returnParameters":{"id":3540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3539,"mutability":"mutable","name":"success","nameLocation":"535:7:18","nodeType":"VariableDeclaration","scope":3541,"src":"530:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3538,"name":"bool","nodeType":"ElementaryTypeName","src":"530:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"529:14:18"},"scope":3542,"src":"416:128:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3646,"src":"382:164:18","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":3543,"name":"IBusinessContract","nameLocations":["584:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":3542,"src":"584:17:18"},"id":3544,"nodeType":"InheritanceSpecifier","src":"584:17:18"},{"baseName":{"id":3545,"name":"Initializable","nameLocations":["603:13:18"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"603:13:18"},"id":3546,"nodeType":"InheritanceSpecifier","src":"603:13:18"},{"baseName":{"id":3547,"name":"UUPSUpgradeable","nameLocations":["618:15:18"],"nodeType":"IdentifierPath","referencedDeclaration":798,"src":"618:15:18"},"id":3548,"nodeType":"InheritanceSpecifier","src":"618:15:18"},{"baseName":{"id":3549,"name":"EIP712Upgradeable","nameLocations":["635:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":1188,"src":"635:17:18"},"id":3550,"nodeType":"InheritanceSpecifier","src":"635:17:18"},{"baseName":{"id":3551,"name":"AccessControlUpgradeable","nameLocations":["654:24:18"],"nodeType":"IdentifierPath","referencedDeclaration":362,"src":"654:24:18"},"id":3552,"nodeType":"InheritanceSpecifier","src":"654:24:18"}],"canonicalName":"BusinessContractExample","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3645,"linearizedBaseContracts":[3645,362,1228,2363,1311,844,1188,1336,798,1346,616,3542],"name":"BusinessContractExample","nameLocation":"557:23:18","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"75b238fc","id":3557,"mutability":"constant","name":"ADMIN_ROLE","nameLocation":"710:10:18","nodeType":"VariableDeclaration","scope":3645,"src":"686:60:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"686:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"61646d696e5f726f6c65","id":3555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"733:12:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde","typeString":"literal_string \"admin_role\""},"value":"admin_role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde","typeString":"literal_string \"admin_role\""}],"id":3554,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"723:9:18","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"723:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"b908afa8","id":3562,"mutability":"constant","name":"UPGRADE_ROLE","nameLocation":"776:12:18","nodeType":"VariableDeclaration","scope":3645,"src":"752:64:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3558,"name":"bytes32","nodeType":"ElementaryTypeName","src":"752:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"757067726164655f726f6c65","id":3560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"801:14:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_cab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f9","typeString":"literal_string \"upgrade_role\""},"value":"upgrade_role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f9","typeString":"literal_string \"upgrade_role\""}],"id":3559,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"791:9:18","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"791:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"c42ef38c","id":3567,"mutability":"constant","name":"SENDER_ROLE","nameLocation":"846:11:18","nodeType":"VariableDeclaration","scope":3645,"src":"822:62:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3563,"name":"bytes32","nodeType":"ElementaryTypeName","src":"822:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"73656e6465725f726f6c65","id":3565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"870:13:18","typeDescriptions":{"typeIdentifier":"t_stringliteral_1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f","typeString":"literal_string \"sender_role\""},"value":"sender_role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f","typeString":"literal_string \"sender_role\""}],"id":3564,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"860:9:18","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"860:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":3596,"nodeType":"Block","src":"932:215:18","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3572,"name":"__AccessControl_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"942:20:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"942:22:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3574,"nodeType":"ExpressionStatement","src":"942:22:18"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3575,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"974:22:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"974:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3577,"nodeType":"ExpressionStatement","src":"974:24:18"},{"expression":{"arguments":[{"id":3579,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"1019:18:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3580,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1039:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1043:6:18","memberName":"sender","nodeType":"MemberAccess","src":"1039:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3578,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"1008:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1008:42:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3583,"nodeType":"ExpressionStatement","src":"1008:42:18"},{"expression":{"arguments":[{"id":3585,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3557,"src":"1071:10:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3586,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1083:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1087:6:18","memberName":"sender","nodeType":"MemberAccess","src":"1083:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3584,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"1060:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":3588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1060:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3589,"nodeType":"ExpressionStatement","src":"1060:34:18"},{"expression":{"arguments":[{"id":3591,"name":"UPGRADE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"1115:12:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3592,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1129:3:18","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1133:6:18","memberName":"sender","nodeType":"MemberAccess","src":"1129:10:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3590,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"1104:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1104:36:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3595,"nodeType":"ExpressionStatement","src":"1104:36:18"}]},"functionSelector":"8129fc1c","id":3597,"implemented":true,"kind":"function","modifiers":[{"id":3570,"kind":"modifierInvocation","modifierName":{"id":3569,"name":"initializer","nameLocations":["920:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":470,"src":"920:11:18"},"nodeType":"ModifierInvocation","src":"920:11:18"}],"name":"initialize","nameLocation":"900:10:18","nodeType":"FunctionDefinition","parameters":{"id":3568,"nodeType":"ParameterList","parameters":[],"src":"910:2:18"},"returnParameters":{"id":3571,"nodeType":"ParameterList","parameters":[],"src":"932:0:18"},"scope":3645,"src":"891:256:18","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[752],"body":{"id":3606,"nodeType":"Block","src":"1276:8:18","statements":[]},"id":3607,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3602,"name":"UPGRADE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3562,"src":"1241:12:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3603,"kind":"modifierInvocation","modifierName":{"id":3601,"name":"onlyRole","nameLocations":["1232:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"1232:8:18"},"nodeType":"ModifierInvocation","src":"1232:22:18"}],"name":"_authorizeUpgrade","nameLocation":"1162:17:18","nodeType":"FunctionDefinition","overrides":{"id":3604,"nodeType":"OverrideSpecifier","overrides":[],"src":"1263:8:18"},"parameters":{"id":3600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3599,"mutability":"mutable","name":"newImplementation","nameLocation":"1188:17:18","nodeType":"VariableDeclaration","scope":3607,"src":"1180:25:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3598,"name":"address","nodeType":"ElementaryTypeName","src":"1180:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1179:27:18"},"returnParameters":{"id":3605,"nodeType":"ParameterList","parameters":[],"src":"1276:0:18"},"scope":3645,"src":"1153:131:18","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"5ec4b4254fe4f840b0f2ee94ee4e2d3b44b52badb9327a5b8baa90e75cc8395d","id":3617,"name":"Send","nameLocation":"1296:4:18","nodeType":"EventDefinition","parameters":{"id":3616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3609,"indexed":false,"mutability":"mutable","name":"from_chain_id","nameLocation":"1309:13:18","nodeType":"VariableDeclaration","scope":3617,"src":"1301:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3608,"name":"uint256","nodeType":"ElementaryTypeName","src":"1301:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3611,"indexed":false,"mutability":"mutable","name":"from_id","nameLocation":"1332:7:18","nodeType":"VariableDeclaration","scope":3617,"src":"1324:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3610,"name":"uint256","nodeType":"ElementaryTypeName","src":"1324:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3613,"indexed":false,"mutability":"mutable","name":"from_sender","nameLocation":"1349:11:18","nodeType":"VariableDeclaration","scope":3617,"src":"1341:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3612,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3615,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"1368:4:18","nodeType":"VariableDeclaration","scope":3617,"src":"1362:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3614,"name":"bytes","nodeType":"ElementaryTypeName","src":"1362:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1300:73:18"},"src":"1290:84:18"},{"baseFunctions":[3541],"body":{"id":3643,"nodeType":"Block","src":"1539:275:18","statements":[{"eventCall":{"arguments":[{"id":3635,"name":"from_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"1744:13:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3636,"name":"from_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"1759:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3637,"name":"from_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"1768:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3638,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"1781:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3634,"name":"Send","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"1739:4:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,address,bytes memory)"}},"id":3639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1739:47:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3640,"nodeType":"EmitStatement","src":"1734:52:18"},{"expression":{"hexValue":"74727565","id":3641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1803:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3633,"id":3642,"nodeType":"Return","src":"1796:11:18"}]},"functionSelector":"e09ee870","id":3644,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3628,"name":"SENDER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"1494:11:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3629,"kind":"modifierInvocation","modifierName":{"id":3627,"name":"onlyRole","nameLocations":["1485:8:18"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"1485:8:18"},"nodeType":"ModifierInvocation","src":"1485:21:18"}],"name":"send","nameLocation":"1389:4:18","nodeType":"FunctionDefinition","overrides":{"id":3630,"nodeType":"OverrideSpecifier","overrides":[],"src":"1507:8:18"},"parameters":{"id":3626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3619,"mutability":"mutable","name":"from_chain_id","nameLocation":"1402:13:18","nodeType":"VariableDeclaration","scope":3644,"src":"1394:21:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3618,"name":"uint256","nodeType":"ElementaryTypeName","src":"1394:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3621,"mutability":"mutable","name":"from_id","nameLocation":"1425:7:18","nodeType":"VariableDeclaration","scope":3644,"src":"1417:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3620,"name":"uint256","nodeType":"ElementaryTypeName","src":"1417:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3623,"mutability":"mutable","name":"from_sender","nameLocation":"1442:11:18","nodeType":"VariableDeclaration","scope":3644,"src":"1434:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3622,"name":"address","nodeType":"ElementaryTypeName","src":"1434:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3625,"mutability":"mutable","name":"data","nameLocation":"1470:4:18","nodeType":"VariableDeclaration","scope":3644,"src":"1455:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3624,"name":"bytes","nodeType":"ElementaryTypeName","src":"1455:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1393:82:18"},"returnParameters":{"id":3633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3632,"mutability":"mutable","name":"success","nameLocation":"1530:7:18","nodeType":"VariableDeclaration","scope":3644,"src":"1525:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3631,"name":"bool","nodeType":"ElementaryTypeName","src":"1525:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1524:14:18"},"scope":3645,"src":"1380:434:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3646,"src":"548:1269:18","usedErrors":[379,382,643,648,1238,1241,1381,1394,1672,1675],"usedEvents":[387,1250,1259,1268,1316,1360,3617]}],"src":"32:1785:18"},"id":18}},"contracts":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"AccessControlUpgradeable":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"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.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"EIP712Upgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to produce the hash of their typed data using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":\"EIP712Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x85462422a22578744581e012e9aa0a391958cb360288b0b63f29bf0431d70327\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bc529e2b9b28da5d26da451058250d85afcaa3c5083ee273ac68fa6bf956b78\",\"dweb:/ipfs/Qmd3Aq59ztmoVmHigsaR4YjkXWKERVpjfQ4a2PHk7Ke6Rx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"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); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"IERC5267":{"abi":[{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":\"IERC5267\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"beacon","type":"address"}],"name":"ERC1967InvalidBeacon","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fb3f28c1d9a5e0b4976c1f7c4a4ce18ce467171e5a5966bcc771239da9fa58864736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xB3F28C1D9A5E0B4976C1F7C4A4CE18CE467171E5A5966BCC771239DA9FA58864 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"449:6273:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;449:6273:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fb3f28c1d9a5e0b4976c1f7c4a4ce18ce467171e5a5966bcc771239da9fa58864736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xB3F28C1D9A5E0B4976C1F7C4A4CE18CE467171E5A5966BCC771239DA9FA58864 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"449:6273:9:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2116c26642d99b6660542ad25041b3381980959e7b44f2e036b7fe738bc77ee64736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 GT PUSH13 0x26642D99B6660542AD25041B33 DUP2 SWAP9 MULMOD MSIZE 0xE7 0xB4 0x4F 0x2E SUB PUSH12 0x7FE738BC77EE64736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"195:6066:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:6066:11;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2116c26642d99b6660542ad25041b3381980959e7b44f2e036b7fe738bc77ee64736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 GT PUSH13 0x26642D99B6660542AD25041B33 DUP2 SWAP9 MULMOD MSIZE 0xE7 0xB4 0x4F 0x2E SUB PUSH12 0x7FE738BC77EE64736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"195:6066:11:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059fa9fe938fefef1bd0eb076859bb74dbab034420677a2ae82078da6df2e86f464736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE STATICCALL SWAP16 0xE9 CODESIZE INVALID INVALID CALL 0xBD 0xE 0xB0 PUSH23 0x859BB74DBAB034420677A2AE82078DA6DF2E86F464736F PUSH13 0x63430008140033000000000000 ","sourceMap":"1245:2685:12:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1245:2685:12;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059fa9fe938fefef1bd0eb076859bb74dbab034420677a2ae82078da6df2e86f464736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE STATICCALL SWAP16 0xE9 CODESIZE INVALID INVALID CALL 0xBD 0xE 0xB0 PUSH23 0x859BB74DBAB034420677A2AE82078DA6DF2E86F464736F PUSH13 0x63430008140033000000000000 ","sourceMap":"1245:2685:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d70f15be75af79ae10cdfad86ba6045493973d2d6779ed4d31615b58387c022164736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 0xF ISZERO 0xBE PUSH22 0xAF79AE10CDFAD86BA6045493973D2D6779ED4D31615B PC CODESIZE PUSH29 0x22164736F6C6343000814003300000000000000000000000000000000 ","sourceMap":"251:2847:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:13;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d70f15be75af79ae10cdfad86ba6045493973d2d6779ed4d31615b58387c022164736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 0xF ISZERO 0xBE PUSH22 0xAF79AE10CDFAD86BA6045493973D2D6779ED4D31615B PC CODESIZE PUSH29 0x22164736F6C6343000814003300000000000000000000000000000000 ","sourceMap":"251:2847:13:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"MessageHashUtils":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e646b204a217f98e3ebddc7a4376e69f44216c583dc162ce889d8c14c2a6913664736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 CHAINID 0xB2 DIV LOG2 OR 0xF9 DUP15 RETURNDATACOPY 0xBD 0xDC PUSH27 0x4376E69F44216C583DC162CE889D8C14C2A6913664736F6C634300 ADDMOD EQ STOP CALLER ","sourceMap":"521:3235:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;521:3235:14;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e646b204a217f98e3ebddc7a4376e69f44216c583dc162ce889d8c14c2a6913664736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 CHAINID 0xB2 DIV LOG2 OR 0xF9 DUP15 RETURNDATACOPY 0xBD 0xDC PUSH27 0x4376E69F44216C583DC162CE889D8C14C2A6913664736F6C634300 ADDMOD EQ STOP CALLER ","sourceMap":"521:3235:14:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing. The library provides methods for generating a hash of a message that conforms to the https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712] specifications.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":\"MessageHashUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[{"inputs":[],"name":"MathOverflowedMulDiv","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b68383f9d48a41264ff8ca2c2eb9bf77a9f2883294fa8b82c7719b48d40b0f864736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH9 0x383F9D48A41264FF8C LOG2 0xC2 0xEB SWAP12 0xF7 PUSH27 0x9F2883294FA8B82C7719B48D40B0F864736F6C6343000814003300 ","sourceMap":"203:14914:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:16;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b68383f9d48a41264ff8ca2c2eb9bf77a9f2883294fa8b82c7719b48d40b0f864736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH9 0x383F9D48A41264FF8C LOG2 0xC2 0xEB SWAP12 0xF7 PUSH27 0x9F2883294FA8B82C7719B48D40B0F864736F6C6343000814003300 ","sourceMap":"203:14914:16:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c07cb824bf56ed2e2e56bc80d8c7ae11334f1229542a9fb2b54655d41fd07ac64736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 SMOD 0xCB DUP3 0x4B CREATE2 PUSH15 0xD2E2E56BC80D8C7AE11334F1229542 0xA9 0xFB 0x2B SLOAD PUSH6 0x5D41FD07AC64 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"216:1047:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:17;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c07cb824bf56ed2e2e56bc80d8c7ae11334f1229542a9fb2b54655d41fd07ac64736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 SMOD 0xCB DUP3 0x4B CREATE2 PUSH15 0xD2E2E56BC80D8C7AE11334F1229542 0xA9 0xFB 0x2B SLOAD PUSH6 0x5D41FD07AC64 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"216:1047:17:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/business/BusinessContractExample.sol":{"BusinessContractExample":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"from_id","type":"uint256"},{"indexed":false,"internalType":"address","name":"from_sender","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Send","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SENDER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"internalType":"uint256","name":"from_id","type":"uint256"},{"internalType":"address","name":"from_sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"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":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b506080516114dc61003e60003960008181610a4e01528181610a770152610c1901526114dc6000f3fe6080604052600436106100f35760003560e01c806384b0196e1161008a578063b908afa811610059578063b908afa814610335578063c42ef38c14610369578063d547741f1461039d578063e09ee870146103bd57600080fd5b806384b0196e1461023d57806391d1485414610265578063a217fddf146102ca578063ad3cb1cc146102df57600080fd5b80634f1ef286116100c65780634f1ef286146101cc57806352d1902d146101df57806375b238fc146101f45780638129fc1c1461022857600080fd5b806301ffc9a7146100f8578063248a9ca31461012d5780632f2ff15d1461018a57806336568abe146101ac575b600080fd5b34801561010457600080fd5b506101186101133660046110c6565b6103dd565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061017c610148366004611108565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610124565b34801561019657600080fd5b506101aa6101a536600461113d565b610476565b005b3480156101b857600080fd5b506101aa6101c736600461113d565b6104c0565b6101aa6101da36600461117f565b610511565b3480156101eb57600080fd5b5061017c610530565b34801561020057600080fd5b5061017c7f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde81565b34801561023457600080fd5b506101aa61055f565b34801561024957600080fd5b50610252610704565b6040516101249796959493929190611291565b34801561027157600080fd5b5061011861028036600461113d565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156102d657600080fd5b5061017c600081565b3480156102eb57600080fd5b506103286040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101249190611343565b34801561034157600080fd5b5061017c7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f981565b34801561037557600080fd5b5061017c7f1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f81565b3480156103a957600080fd5b506101aa6103b836600461113d565b610805565b3480156103c957600080fd5b506101186103d8366004611356565b610849565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061047057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546104b0816108c1565b6104ba83836108ce565b50505050565b6001600160a01b0381163314610502576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050c828261099d565b505050565b610519610a43565b61052282610afc565b61052c8282610b26565b5050565b600061053a610c0e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156105aa5750825b905060008267ffffffffffffffff1660011480156105c75750303b155b9050811580156105d5575080155b1561060c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561064057845468ff00000000000000001916680100000000000000001785555b610648610c57565b610650610c57565b61065b6000336108ce565b506106867f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde336108ce565b506106b17fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f9336108ce565b5083156106fd57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100805490915015801561074357506001810154155b6107ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064015b60405180910390fd5b6107b6610c5f565b6107be610d34565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461083f816108c1565b6104ba838361099d565b60007f1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f610875816108c1565b7f5ec4b4254fe4f840b0f2ee94ee4e2d3b44b52badb9327a5b8baa90e75cc8395d87878787876040516108ac9594939291906113ea565b60405180910390a15060019695505050505050565b6108cb8133610d85565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16610993576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556109493390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610470565b6000915050610470565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615610993576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610470565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610adc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ad07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610afa5760405163703e46dd60e11b815260040160405180910390fd5b565b7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f961052c816108c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b80575060408051601f3d908101601f19168201909252610b7d91810190611437565b60015b610ba857604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107a5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610c04576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016107a5565b61050c8383610e12565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afa5760405163703e46dd60e11b815260040160405180910390fd5b610afa610e68565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610cb090611450565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdc90611450565b8015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610cb090611450565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661052c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016107a5565b610e1b82610ecf565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e605761050c8282610f5e565b61052c610fd4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610afa576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b03163b600003610f0557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107a5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610f7b919061148a565b600060405180830381855af49150503d8060008114610fb6576040519150601f19603f3d011682016040523d82523d6000602084013e610fbb565b606091505b5091509150610fcb85838361100c565b95945050505050565b3415610afa576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826110215761101c82611084565b61107d565b815115801561103857506001600160a01b0384163b155b1561107a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016107a5565b50805b9392505050565b8051156110945780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461107d57600080fd5b60006020828403121561111a57600080fd5b5035919050565b80356001600160a01b038116811461113857600080fd5b919050565b6000806040838503121561115057600080fd5b8235915061116060208401611121565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561119257600080fd5b61119b83611121565b9150602083013567ffffffffffffffff808211156111b857600080fd5b818501915085601f8301126111cc57600080fd5b8135818111156111de576111de611169565b604051601f8201601f19908116603f0116810190838211818310171561120657611206611169565b8160405282815288602084870101111561121f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561125c578181015183820152602001611244565b50506000910152565b6000815180845261127d816020860160208601611241565b601f01601f19169290920160200192915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526112cd60e084018a611265565b83810360408501526112df818a611265565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561133157835183529284019291840191600101611315565b50909c9b505050505050505050505050565b60208152600061107d6020830184611265565b60008060008060006080868803121561136e57600080fd5b853594506020860135935061138560408701611121565b9250606086013567ffffffffffffffff808211156113a257600080fd5b818801915088601f8301126113b657600080fd5b8135818111156113c557600080fd5b8960208285010111156113d757600080fd5b9699959850939650602001949392505050565b8581528460208201526001600160a01b038416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561144957600080fd5b5051919050565b600181811c9082168061146457607f821691505b60208210810361148457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161149c818460208701611241565b919091019291505056fea264697066735822122014b9ca837310f9586a089b114c19232df03a7f4c1393211e5a6d766f368ebdf364736f6c63430008140033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x14DC PUSH2 0x3E PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0xA4E ADD MSTORE DUP2 DUP2 PUSH2 0xA77 ADD MSTORE PUSH2 0xC19 ADD MSTORE PUSH2 0x14DC PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x84B0196E GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB908AFA8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB908AFA8 EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0xC42EF38C EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0xE09EE870 EQ PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x84B0196E EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x1AC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C6 JUMP JUMPDEST PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x1108 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x113D JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x113D JUMP JUMPDEST PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x1DA CALLDATASIZE PUSH1 0x4 PUSH2 0x117F JUMP JUMPDEST PUSH2 0x511 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH2 0x530 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x252 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1291 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x113D JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x328 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1343 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x341 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH32 0x1854DEBF63B284C3F1DDA5521BE910EA59783C0DFF877E7649F790D06729A12F DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x3B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x113D JUMP JUMPDEST PUSH2 0x805 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1356 JUMP JUMPDEST PUSH2 0x849 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x470 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x4B0 DUP2 PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0x4BA DUP4 DUP4 PUSH2 0x8CE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x502 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x50C DUP3 DUP3 PUSH2 0x99D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x519 PUSH2 0xA43 JUMP JUMPDEST PUSH2 0x522 DUP3 PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x52C DUP3 DUP3 PUSH2 0xB26 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53A PUSH2 0xC0E JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x5AA JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x5C7 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x5D5 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x640 JUMPI DUP5 SLOAD PUSH9 0xFF0000000000000000 NOT AND PUSH9 0x10000000000000000 OR DUP6 SSTORE JUMPDEST PUSH2 0x648 PUSH2 0xC57 JUMP JUMPDEST PUSH2 0x650 PUSH2 0xC57 JUMP JUMPDEST PUSH2 0x65B PUSH1 0x0 CALLER PUSH2 0x8CE JUMP JUMPDEST POP PUSH2 0x686 PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE CALLER PUSH2 0x8CE JUMP JUMPDEST POP PUSH2 0x6B1 PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 CALLER PUSH2 0x8CE JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x6FD JUMPI DUP5 SLOAD PUSH9 0xFF0000000000000000 NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 DUP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 DUP1 SLOAD SWAP1 SWAP2 POP ISZERO DUP1 ISZERO PUSH2 0x743 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0x7AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4549503731323A20556E696E697469616C697A65640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7B6 PUSH2 0xC5F JUMP JUMPDEST PUSH2 0x7BE PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 SWAP13 SWAP4 SWAP12 POP SWAP2 SWAP10 POP CHAINID SWAP9 POP ADDRESS SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x83F DUP2 PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0x4BA DUP4 DUP4 PUSH2 0x99D JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1854DEBF63B284C3F1DDA5521BE910EA59783C0DFF877E7649F790D06729A12F PUSH2 0x875 DUP2 PUSH2 0x8C1 JUMP JUMPDEST PUSH32 0x5EC4B4254FE4F840B0F2EE94EE4E2D3B44B52BADB9327A5B8BAA90E75CC8395D DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x8AC SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8CB DUP2 CALLER PUSH2 0xD85 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x993 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x949 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x993 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0xADC JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD0 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 PUSH2 0x52C DUP2 PUSH2 0x8C1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB80 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB7D SWAP2 DUP2 ADD SWAP1 PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xBA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7A5 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xC04 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x7A5 JUMP JUMPDEST PUSH2 0x50C DUP4 DUP4 PUSH2 0xE12 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAFA PUSH2 0xE68 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 SWAP2 PUSH2 0xCB0 SWAP1 PUSH2 0x1450 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xCDC SWAP1 PUSH2 0x1450 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xD29 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xCFE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xD29 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xD0C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 SWAP2 PUSH2 0xCB0 SWAP1 PUSH2 0x1450 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x52C JUMPI PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x7A5 JUMP JUMPDEST PUSH2 0xE1B DUP3 PUSH2 0xECF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0xE60 JUMPI PUSH2 0x50C DUP3 DUP3 PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x52C PUSH2 0xFD4 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xF05 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7A5 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0xF7B SWAP2 SWAP1 PUSH2 0x148A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFB6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFBB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xFCB DUP6 DUP4 DUP4 PUSH2 0x100C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1021 JUMPI PUSH2 0x101C DUP3 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x107D JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1038 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x107A JUMPI PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7A5 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1094 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x107D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x111A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x1160 PUSH1 0x20 DUP5 ADD PUSH2 0x1121 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x119B DUP4 PUSH2 0x1121 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x11B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x11DE JUMPI PUSH2 0x11DE PUSH2 0x1169 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1206 JUMPI PUSH2 0x1206 PUSH2 0x1169 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x121F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x125C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1244 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x127D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1241 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP9 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 DUP2 DUP5 ADD MSTORE PUSH2 0x12CD PUSH1 0xE0 DUP5 ADD DUP11 PUSH2 0x1265 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x12DF DUP2 DUP11 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD DUP8 SWAP1 MSTORE DUP5 DUP2 SUB PUSH1 0xC0 DUP7 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE DUP4 DUP8 ADD SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1331 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1315 JUMP JUMPDEST POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x107D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x136E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1385 PUSH1 0x40 DUP8 ADD PUSH2 0x1121 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x13C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x13D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP6 DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0xA0 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0xA0 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1464 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1484 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x149C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1241 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xB9 0xCA DUP4 PUSH20 0x10F9586A089B114C19232DF03A7F4C1393211E5A PUSH14 0x766F368EBDF364736F6C63430008 EQ STOP CALLER ","sourceMap":"548:1269:18:-:0;;;1171:4:2;1128:48;;548:1269:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ADMIN_ROLE_3557":{"entryPoint":null,"id":3557,"parameterSlots":0,"returnSlots":0},"@DEFAULT_ADMIN_ROLE_28":{"entryPoint":null,"id":28,"parameterSlots":0,"returnSlots":0},"@SENDER_ROLE_3567":{"entryPoint":null,"id":3567,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_640":{"entryPoint":null,"id":640,"parameterSlots":0,"returnSlots":0},"@UPGRADE_ROLE_3562":{"entryPoint":null,"id":3562,"parameterSlots":0,"returnSlots":0},"@_EIP712Name_1067":{"entryPoint":3167,"id":1067,"parameterSlots":0,"returnSlots":1},"@_EIP712Version_1083":{"entryPoint":3380,"id":1083,"parameterSlots":0,"returnSlots":1},"@__AccessControl_init_63":{"entryPoint":3159,"id":63,"parameterSlots":0,"returnSlots":0},"@__UUPSUpgradeable_init_670":{"entryPoint":null,"id":670,"parameterSlots":0,"returnSlots":0},"@_authorizeUpgrade_3607":{"entryPoint":2812,"id":3607,"parameterSlots":1,"returnSlots":0},"@_checkInitializing_538":{"entryPoint":3688,"id":538,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_1648":{"entryPoint":4052,"id":1648,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_746":{"entryPoint":3086,"id":746,"parameterSlots":0,"returnSlots":0},"@_checkProxy_730":{"entryPoint":2627,"id":730,"parameterSlots":0,"returnSlots":0},"@_checkRole_129":{"entryPoint":2241,"id":129,"parameterSlots":1,"returnSlots":0},"@_checkRole_150":{"entryPoint":3461,"id":150,"parameterSlots":2,"returnSlots":0},"@_getAccessControlStorage_46":{"entryPoint":null,"id":46,"parameterSlots":0,"returnSlots":1},"@_getEIP712Storage_885":{"entryPoint":null,"id":885,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_615":{"entryPoint":null,"id":615,"parameterSlots":0,"returnSlots":1},"@_grantRole_315":{"entryPoint":2254,"id":315,"parameterSlots":2,"returnSlots":1},"@_isInitializing_606":{"entryPoint":null,"id":606,"parameterSlots":0,"returnSlots":1},"@_msgSender_826":{"entryPoint":null,"id":826,"parameterSlots":0,"returnSlots":1},"@_revert_1911":{"entryPoint":4228,"id":1911,"parameterSlots":1,"returnSlots":0},"@_revokeRole_361":{"entryPoint":2461,"id":361,"parameterSlots":2,"returnSlots":1},"@_setImplementation_1434":{"entryPoint":3791,"id":1434,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_797":{"entryPoint":2854,"id":797,"parameterSlots":2,"returnSlots":0},"@eip712Domain_1051":{"entryPoint":1796,"id":1051,"parameterSlots":0,"returnSlots":7},"@functionDelegateCall_1831":{"entryPoint":3934,"id":1831,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1944":{"entryPoint":null,"id":1944,"parameterSlots":1,"returnSlots":1},"@getImplementation_1407":{"entryPoint":null,"id":1407,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_171":{"entryPoint":null,"id":171,"parameterSlots":1,"returnSlots":1},"@grantRole_190":{"entryPoint":1142,"id":190,"parameterSlots":2,"returnSlots":0},"@hasRole_116":{"entryPoint":null,"id":116,"parameterSlots":2,"returnSlots":1},"@initialize_3597":{"entryPoint":1375,"id":3597,"parameterSlots":0,"returnSlots":0},"@proxiableUUID_688":{"entryPoint":1328,"id":688,"parameterSlots":0,"returnSlots":1},"@renounceRole_232":{"entryPoint":1216,"id":232,"parameterSlots":2,"returnSlots":0},"@revokeRole_209":{"entryPoint":2053,"id":209,"parameterSlots":2,"returnSlots":0},"@send_3644":{"entryPoint":2121,"id":3644,"parameterSlots":5,"returnSlots":1},"@supportsInterface_1227":{"entryPoint":null,"id":1227,"parameterSlots":1,"returnSlots":1},"@supportsInterface_91":{"entryPoint":989,"id":91,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_1468":{"entryPoint":3602,"id":1468,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_708":{"entryPoint":1297,"id":708,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1871":{"entryPoint":4108,"id":1871,"parameterSlots":3,"returnSlots":1},"abi_decode_address":{"entryPoint":4385,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":4479,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":4360,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":5175,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":4413,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4294,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_calldata_ptr":{"entryPoint":4950,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_string":{"entryPoint":4709,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5258,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":4753,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4931,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5098,"id":null,"parameterSlots":6,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4673,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":5200,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x41":{"entryPoint":4457,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8139:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:263:19","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:19"},"nodeType":"YulFunctionCall","src":"131:12:19"},"nodeType":"YulExpressionStatement","src":"131:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:19"},"nodeType":"YulFunctionCall","src":"100:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:19"},"nodeType":"YulFunctionCall","src":"96:32:19"},"nodeType":"YulIf","src":"93:52:19"},{"nodeType":"YulVariableDeclaration","src":"154:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:19"},"nodeType":"YulFunctionCall","src":"167:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"300:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"309:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"312:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"302:6:19"},"nodeType":"YulFunctionCall","src":"302:12:19"},"nodeType":"YulExpressionStatement","src":"302:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"230:66:19","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:19"},"nodeType":"YulFunctionCall","src":"219:78:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:19"},"nodeType":"YulFunctionCall","src":"209:89:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:19"},"nodeType":"YulFunctionCall","src":"202:97:19"},"nodeType":"YulIf","src":"199:117:19"},{"nodeType":"YulAssignment","src":"325:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"335:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"325:6:19"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:19","type":""}],"src":"14:332:19"},{"body":{"nodeType":"YulBlock","src":"446:92:19","statements":[{"nodeType":"YulAssignment","src":"456:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:19"},"nodeType":"YulFunctionCall","src":"464:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"456:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"498:9:19"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"523:6:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"516:6:19"},"nodeType":"YulFunctionCall","src":"516:14:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"509:6:19"},"nodeType":"YulFunctionCall","src":"509:22:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"491:6:19"},"nodeType":"YulFunctionCall","src":"491:41:19"},"nodeType":"YulExpressionStatement","src":"491:41:19"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"415:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"426:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"437:4:19","type":""}],"src":"351:187:19"},{"body":{"nodeType":"YulBlock","src":"613:110:19","statements":[{"body":{"nodeType":"YulBlock","src":"659:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"668:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"671:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"661:6:19"},"nodeType":"YulFunctionCall","src":"661:12:19"},"nodeType":"YulExpressionStatement","src":"661:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"634:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"643:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"630:3:19"},"nodeType":"YulFunctionCall","src":"630:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"655:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"626:3:19"},"nodeType":"YulFunctionCall","src":"626:32:19"},"nodeType":"YulIf","src":"623:52:19"},{"nodeType":"YulAssignment","src":"684:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"707:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"694:12:19"},"nodeType":"YulFunctionCall","src":"694:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"684:6:19"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"579:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"590:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"602:6:19","type":""}],"src":"543:180:19"},{"body":{"nodeType":"YulBlock","src":"829:76:19","statements":[{"nodeType":"YulAssignment","src":"839:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"851:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"862:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"847:3:19"},"nodeType":"YulFunctionCall","src":"847:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"839:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"881:9:19"},{"name":"value0","nodeType":"YulIdentifier","src":"892:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"874:6:19"},"nodeType":"YulFunctionCall","src":"874:25:19"},"nodeType":"YulExpressionStatement","src":"874:25:19"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"798:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"809:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"820:4:19","type":""}],"src":"728:177:19"},{"body":{"nodeType":"YulBlock","src":"959:147:19","statements":[{"nodeType":"YulAssignment","src":"969:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"991:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"978:12:19"},"nodeType":"YulFunctionCall","src":"978:20:19"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"969:5:19"}]},{"body":{"nodeType":"YulBlock","src":"1084:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1093:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1096:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1086:6:19"},"nodeType":"YulFunctionCall","src":"1086:12:19"},"nodeType":"YulExpressionStatement","src":"1086:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1020:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1031:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"1038:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1027:3:19"},"nodeType":"YulFunctionCall","src":"1027:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1017:2:19"},"nodeType":"YulFunctionCall","src":"1017:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1010:6:19"},"nodeType":"YulFunctionCall","src":"1010:73:19"},"nodeType":"YulIf","src":"1007:93:19"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"938:6:19","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"949:5:19","type":""}],"src":"910:196:19"},{"body":{"nodeType":"YulBlock","src":"1198:167:19","statements":[{"body":{"nodeType":"YulBlock","src":"1244:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1253:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1256:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1246:6:19"},"nodeType":"YulFunctionCall","src":"1246:12:19"},"nodeType":"YulExpressionStatement","src":"1246:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1219:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1228:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1215:3:19"},"nodeType":"YulFunctionCall","src":"1215:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1240:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1211:3:19"},"nodeType":"YulFunctionCall","src":"1211:32:19"},"nodeType":"YulIf","src":"1208:52:19"},{"nodeType":"YulAssignment","src":"1269:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1292:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1279:12:19"},"nodeType":"YulFunctionCall","src":"1279:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1269:6:19"}]},{"nodeType":"YulAssignment","src":"1311:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1344:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1355:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1340:3:19"},"nodeType":"YulFunctionCall","src":"1340:18:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1321:18:19"},"nodeType":"YulFunctionCall","src":"1321:38:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1311:6:19"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1156:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1167:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1179:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1187:6:19","type":""}],"src":"1111:254:19"},{"body":{"nodeType":"YulBlock","src":"1402:152:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1419:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1422:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1412:6:19"},"nodeType":"YulFunctionCall","src":"1412:88:19"},"nodeType":"YulExpressionStatement","src":"1412:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1516:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1519:4:19","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1509:6:19"},"nodeType":"YulFunctionCall","src":"1509:15:19"},"nodeType":"YulExpressionStatement","src":"1509:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1540:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1543:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1533:6:19"},"nodeType":"YulFunctionCall","src":"1533:15:19"},"nodeType":"YulExpressionStatement","src":"1533:15:19"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1370:184:19"},{"body":{"nodeType":"YulBlock","src":"1655:899:19","statements":[{"body":{"nodeType":"YulBlock","src":"1701:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1710:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1713:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1703:6:19"},"nodeType":"YulFunctionCall","src":"1703:12:19"},"nodeType":"YulExpressionStatement","src":"1703:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1676:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1685:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1672:3:19"},"nodeType":"YulFunctionCall","src":"1672:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1697:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1668:3:19"},"nodeType":"YulFunctionCall","src":"1668:32:19"},"nodeType":"YulIf","src":"1665:52:19"},{"nodeType":"YulAssignment","src":"1726:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1755:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1736:18:19"},"nodeType":"YulFunctionCall","src":"1736:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1726:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1774:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1805:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1816:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1801:3:19"},"nodeType":"YulFunctionCall","src":"1801:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1788:12:19"},"nodeType":"YulFunctionCall","src":"1788:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1778:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1829:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"1839:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1833:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1884:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1893:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1896:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1886:6:19"},"nodeType":"YulFunctionCall","src":"1886:12:19"},"nodeType":"YulExpressionStatement","src":"1886:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1872:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1880:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1869:2:19"},"nodeType":"YulFunctionCall","src":"1869:14:19"},"nodeType":"YulIf","src":"1866:34:19"},{"nodeType":"YulVariableDeclaration","src":"1909:32:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1923:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"1934:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1919:3:19"},"nodeType":"YulFunctionCall","src":"1919:22:19"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1913:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1989:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1998:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2001:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1991:6:19"},"nodeType":"YulFunctionCall","src":"1991:12:19"},"nodeType":"YulExpressionStatement","src":"1991:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1968:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"1972:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1964:3:19"},"nodeType":"YulFunctionCall","src":"1964:13:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1979:7:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1960:3:19"},"nodeType":"YulFunctionCall","src":"1960:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1953:6:19"},"nodeType":"YulFunctionCall","src":"1953:35:19"},"nodeType":"YulIf","src":"1950:55:19"},{"nodeType":"YulVariableDeclaration","src":"2014:26:19","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2037:2:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2024:12:19"},"nodeType":"YulFunctionCall","src":"2024:16:19"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"2018:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2063:22:19","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2065:16:19"},"nodeType":"YulFunctionCall","src":"2065:18:19"},"nodeType":"YulExpressionStatement","src":"2065:18:19"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2055:2:19"},{"name":"_1","nodeType":"YulIdentifier","src":"2059:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2052:2:19"},"nodeType":"YulFunctionCall","src":"2052:10:19"},"nodeType":"YulIf","src":"2049:36:19"},{"nodeType":"YulVariableDeclaration","src":"2094:17:19","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2108:2:19","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2104:3:19"},"nodeType":"YulFunctionCall","src":"2104:7:19"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"2098:2:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2120:23:19","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2140:2:19","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2134:5:19"},"nodeType":"YulFunctionCall","src":"2134:9:19"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2124:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2152:71:19","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2174:6:19"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"2198:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"2202:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2194:3:19"},"nodeType":"YulFunctionCall","src":"2194:13:19"},{"name":"_4","nodeType":"YulIdentifier","src":"2209:2:19"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2190:3:19"},"nodeType":"YulFunctionCall","src":"2190:22:19"},{"kind":"number","nodeType":"YulLiteral","src":"2214:2:19","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2186:3:19"},"nodeType":"YulFunctionCall","src":"2186:31:19"},{"name":"_4","nodeType":"YulIdentifier","src":"2219:2:19"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2182:3:19"},"nodeType":"YulFunctionCall","src":"2182:40:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2170:3:19"},"nodeType":"YulFunctionCall","src":"2170:53:19"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2156:10:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2282:22:19","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2284:16:19"},"nodeType":"YulFunctionCall","src":"2284:18:19"},"nodeType":"YulExpressionStatement","src":"2284:18:19"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2241:10:19"},{"name":"_1","nodeType":"YulIdentifier","src":"2253:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2238:2:19"},"nodeType":"YulFunctionCall","src":"2238:18:19"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2261:10:19"},{"name":"memPtr","nodeType":"YulIdentifier","src":"2273:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2258:2:19"},"nodeType":"YulFunctionCall","src":"2258:22:19"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2235:2:19"},"nodeType":"YulFunctionCall","src":"2235:46:19"},"nodeType":"YulIf","src":"2232:72:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2320:2:19","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"2324:10:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2313:6:19"},"nodeType":"YulFunctionCall","src":"2313:22:19"},"nodeType":"YulExpressionStatement","src":"2313:22:19"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2351:6:19"},{"name":"_3","nodeType":"YulIdentifier","src":"2359:2:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2344:6:19"},"nodeType":"YulFunctionCall","src":"2344:18:19"},"nodeType":"YulExpressionStatement","src":"2344:18:19"},{"body":{"nodeType":"YulBlock","src":"2408:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2417:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2420:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2410:6:19"},"nodeType":"YulFunctionCall","src":"2410:12:19"},"nodeType":"YulExpressionStatement","src":"2410:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2385:2:19"},{"name":"_3","nodeType":"YulIdentifier","src":"2389:2:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2381:3:19"},"nodeType":"YulFunctionCall","src":"2381:11:19"},{"kind":"number","nodeType":"YulLiteral","src":"2394:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2377:3:19"},"nodeType":"YulFunctionCall","src":"2377:20:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2399:7:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2374:2:19"},"nodeType":"YulFunctionCall","src":"2374:33:19"},"nodeType":"YulIf","src":"2371:53:19"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2450:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2458:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2446:3:19"},"nodeType":"YulFunctionCall","src":"2446:15:19"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2467:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"2471:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2463:3:19"},"nodeType":"YulFunctionCall","src":"2463:11:19"},{"name":"_3","nodeType":"YulIdentifier","src":"2476:2:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2433:12:19"},"nodeType":"YulFunctionCall","src":"2433:46:19"},"nodeType":"YulExpressionStatement","src":"2433:46:19"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2503:6:19"},{"name":"_3","nodeType":"YulIdentifier","src":"2511:2:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2499:3:19"},"nodeType":"YulFunctionCall","src":"2499:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"2516:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2495:3:19"},"nodeType":"YulFunctionCall","src":"2495:24:19"},{"kind":"number","nodeType":"YulLiteral","src":"2521:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2488:6:19"},"nodeType":"YulFunctionCall","src":"2488:35:19"},"nodeType":"YulExpressionStatement","src":"2488:35:19"},{"nodeType":"YulAssignment","src":"2532:16:19","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"2542:6:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2532:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1613:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1624:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1636:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1644:6:19","type":""}],"src":"1559:995:19"},{"body":{"nodeType":"YulBlock","src":"2625:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"2635:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"2644:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2639:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2704:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2729:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"2734:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2725:3:19"},"nodeType":"YulFunctionCall","src":"2725:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2748:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"2753:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2744:3:19"},"nodeType":"YulFunctionCall","src":"2744:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2738:5:19"},"nodeType":"YulFunctionCall","src":"2738:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2718:6:19"},"nodeType":"YulFunctionCall","src":"2718:39:19"},"nodeType":"YulExpressionStatement","src":"2718:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2665:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"2668:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2662:2:19"},"nodeType":"YulFunctionCall","src":"2662:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2676:19:19","statements":[{"nodeType":"YulAssignment","src":"2678:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2687:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"2690:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:19"},"nodeType":"YulFunctionCall","src":"2683:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2678:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"2658:3:19","statements":[]},"src":"2654:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2787:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"2792:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2783:3:19"},"nodeType":"YulFunctionCall","src":"2783:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"2801:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2776:6:19"},"nodeType":"YulFunctionCall","src":"2776:27:19"},"nodeType":"YulExpressionStatement","src":"2776:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"2603:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"2608:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"2613:6:19","type":""}],"src":"2559:250:19"},{"body":{"nodeType":"YulBlock","src":"2864:221:19","statements":[{"nodeType":"YulVariableDeclaration","src":"2874:26:19","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2894:5:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2888:5:19"},"nodeType":"YulFunctionCall","src":"2888:12:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2878:6:19","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2916:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"2921:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2909:6:19"},"nodeType":"YulFunctionCall","src":"2909:19:19"},"nodeType":"YulExpressionStatement","src":"2909:19:19"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2976:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"2983:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2972:3:19"},"nodeType":"YulFunctionCall","src":"2972:16:19"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2994:3:19"},{"kind":"number","nodeType":"YulLiteral","src":"2999:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2990:3:19"},"nodeType":"YulFunctionCall","src":"2990:14:19"},{"name":"length","nodeType":"YulIdentifier","src":"3006:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"2937:34:19"},"nodeType":"YulFunctionCall","src":"2937:76:19"},"nodeType":"YulExpressionStatement","src":"2937:76:19"},{"nodeType":"YulAssignment","src":"3022:57:19","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3037:3:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3050:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"3058:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3046:3:19"},"nodeType":"YulFunctionCall","src":"3046:15:19"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3067:2:19","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3063:3:19"},"nodeType":"YulFunctionCall","src":"3063:7:19"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3042:3:19"},"nodeType":"YulFunctionCall","src":"3042:29:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3033:3:19"},"nodeType":"YulFunctionCall","src":"3033:39:19"},{"kind":"number","nodeType":"YulLiteral","src":"3074:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3029:3:19"},"nodeType":"YulFunctionCall","src":"3029:50:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3022:3:19"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2841:5:19","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2848:3:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2856:3:19","type":""}],"src":"2814:271:19"},{"body":{"nodeType":"YulBlock","src":"3447:978:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3464:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3479:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"3487:66:19","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3475:3:19"},"nodeType":"YulFunctionCall","src":"3475:79:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3457:6:19"},"nodeType":"YulFunctionCall","src":"3457:98:19"},"nodeType":"YulExpressionStatement","src":"3457:98:19"},{"nodeType":"YulVariableDeclaration","src":"3564:12:19","value":{"kind":"number","nodeType":"YulLiteral","src":"3574:2:19","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3568:2:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3596:9:19"},{"name":"_1","nodeType":"YulIdentifier","src":"3607:2:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3592:3:19"},"nodeType":"YulFunctionCall","src":"3592:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3612:3:19","type":"","value":"224"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3585:6:19"},"nodeType":"YulFunctionCall","src":"3585:31:19"},"nodeType":"YulExpressionStatement","src":"3585:31:19"},{"nodeType":"YulVariableDeclaration","src":"3625:60:19","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3657:6:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3669:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3680:3:19","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3665:3:19"},"nodeType":"YulFunctionCall","src":"3665:19:19"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"3639:17:19"},"nodeType":"YulFunctionCall","src":"3639:46:19"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"3629:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3705:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3716:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:19"},"nodeType":"YulFunctionCall","src":"3701:18:19"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"3725:6:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"3733:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3721:3:19"},"nodeType":"YulFunctionCall","src":"3721:22:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3694:6:19"},"nodeType":"YulFunctionCall","src":"3694:50:19"},"nodeType":"YulExpressionStatement","src":"3694:50:19"},{"nodeType":"YulVariableDeclaration","src":"3753:47:19","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"3785:6:19"},{"name":"tail_1","nodeType":"YulIdentifier","src":"3793:6:19"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"3767:17:19"},"nodeType":"YulFunctionCall","src":"3767:33:19"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"3757:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3820:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3831:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3816:3:19"},"nodeType":"YulFunctionCall","src":"3816:18:19"},{"name":"value3","nodeType":"YulIdentifier","src":"3836:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3809:6:19"},"nodeType":"YulFunctionCall","src":"3809:34:19"},"nodeType":"YulExpressionStatement","src":"3809:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3863:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3874:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3859:3:19"},"nodeType":"YulFunctionCall","src":"3859:19:19"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"3884:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"3892:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3880:3:19"},"nodeType":"YulFunctionCall","src":"3880:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3852:6:19"},"nodeType":"YulFunctionCall","src":"3852:84:19"},"nodeType":"YulExpressionStatement","src":"3852:84:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3956:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3967:3:19","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3952:3:19"},"nodeType":"YulFunctionCall","src":"3952:19:19"},{"name":"value5","nodeType":"YulIdentifier","src":"3973:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3945:6:19"},"nodeType":"YulFunctionCall","src":"3945:35:19"},"nodeType":"YulExpressionStatement","src":"3945:35:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4000:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4011:3:19","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3996:3:19"},"nodeType":"YulFunctionCall","src":"3996:19:19"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"4021:6:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"4029:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4017:3:19"},"nodeType":"YulFunctionCall","src":"4017:22:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3989:6:19"},"nodeType":"YulFunctionCall","src":"3989:51:19"},"nodeType":"YulExpressionStatement","src":"3989:51:19"},{"nodeType":"YulVariableDeclaration","src":"4049:17:19","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"4060:6:19"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"4053:3:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4075:27:19","value":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"4095:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4089:5:19"},"nodeType":"YulFunctionCall","src":"4089:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4079:6:19","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"4118:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"4126:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4111:6:19"},"nodeType":"YulFunctionCall","src":"4111:22:19"},"nodeType":"YulExpressionStatement","src":"4111:22:19"},{"nodeType":"YulAssignment","src":"4142:22:19","value":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"4153:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"4161:2:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4149:3:19"},"nodeType":"YulFunctionCall","src":"4149:15:19"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4142:3:19"}]},{"nodeType":"YulVariableDeclaration","src":"4173:29:19","value":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"4191:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"4199:2:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4187:3:19"},"nodeType":"YulFunctionCall","src":"4187:15:19"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"4177:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4211:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"4220:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4215:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"4279:120:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4300:3:19"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4311:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4305:5:19"},"nodeType":"YulFunctionCall","src":"4305:13:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4293:6:19"},"nodeType":"YulFunctionCall","src":"4293:26:19"},"nodeType":"YulExpressionStatement","src":"4293:26:19"},{"nodeType":"YulAssignment","src":"4332:19:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4343:3:19"},{"name":"_1","nodeType":"YulIdentifier","src":"4348:2:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4339:3:19"},"nodeType":"YulFunctionCall","src":"4339:12:19"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4332:3:19"}]},{"nodeType":"YulAssignment","src":"4364:25:19","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4378:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"4386:2:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4374:3:19"},"nodeType":"YulFunctionCall","src":"4374:15:19"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"4364:6:19"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4241:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"4244:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4238:2:19"},"nodeType":"YulFunctionCall","src":"4238:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4252:18:19","statements":[{"nodeType":"YulAssignment","src":"4254:14:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4263:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"4266:1:19","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4259:3:19"},"nodeType":"YulFunctionCall","src":"4259:9:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4254:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"4234:3:19","statements":[]},"src":"4230:169:19"},{"nodeType":"YulAssignment","src":"4408:11:19","value":{"name":"pos","nodeType":"YulIdentifier","src":"4416:3:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4408:4:19"}]}]},"name":"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3368:9:19","type":""},{"name":"value6","nodeType":"YulTypedName","src":"3379:6:19","type":""},{"name":"value5","nodeType":"YulTypedName","src":"3387:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3395:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3403:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3411:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3419:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3427:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3438:4:19","type":""}],"src":"3090:1335:19"},{"body":{"nodeType":"YulBlock","src":"4551:99:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4568:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4579:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4561:6:19"},"nodeType":"YulFunctionCall","src":"4561:21:19"},"nodeType":"YulExpressionStatement","src":"4561:21:19"},{"nodeType":"YulAssignment","src":"4591:53:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4617:6:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4629:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4640:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4625:3:19"},"nodeType":"YulFunctionCall","src":"4625:18:19"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"4599:17:19"},"nodeType":"YulFunctionCall","src":"4599:45:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4591:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4520:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4531:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4542:4:19","type":""}],"src":"4430:220:19"},{"body":{"nodeType":"YulBlock","src":"4795:662:19","statements":[{"body":{"nodeType":"YulBlock","src":"4842:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4851:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4854:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4844:6:19"},"nodeType":"YulFunctionCall","src":"4844:12:19"},"nodeType":"YulExpressionStatement","src":"4844:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4816:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"4825:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4812:3:19"},"nodeType":"YulFunctionCall","src":"4812:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"4837:3:19","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4808:3:19"},"nodeType":"YulFunctionCall","src":"4808:33:19"},"nodeType":"YulIf","src":"4805:53:19"},{"nodeType":"YulAssignment","src":"4867:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4890:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4877:12:19"},"nodeType":"YulFunctionCall","src":"4877:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4867:6:19"}]},{"nodeType":"YulAssignment","src":"4909:42:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4936:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4947:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4932:3:19"},"nodeType":"YulFunctionCall","src":"4932:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4919:12:19"},"nodeType":"YulFunctionCall","src":"4919:32:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4909:6:19"}]},{"nodeType":"YulAssignment","src":"4960:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4993:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5004:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4989:3:19"},"nodeType":"YulFunctionCall","src":"4989:18:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4970:18:19"},"nodeType":"YulFunctionCall","src":"4970:38:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4960:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"5017:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5048:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5059:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5044:3:19"},"nodeType":"YulFunctionCall","src":"5044:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5031:12:19"},"nodeType":"YulFunctionCall","src":"5031:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5021:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5072:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"5082:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5076:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"5127:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5136:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5139:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5129:6:19"},"nodeType":"YulFunctionCall","src":"5129:12:19"},"nodeType":"YulExpressionStatement","src":"5129:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5115:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"5123:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5112:2:19"},"nodeType":"YulFunctionCall","src":"5112:14:19"},"nodeType":"YulIf","src":"5109:34:19"},{"nodeType":"YulVariableDeclaration","src":"5152:32:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5166:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"5177:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5162:3:19"},"nodeType":"YulFunctionCall","src":"5162:22:19"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"5156:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"5232:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5241:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5244:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5234:6:19"},"nodeType":"YulFunctionCall","src":"5234:12:19"},"nodeType":"YulExpressionStatement","src":"5234:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5211:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"5215:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5207:3:19"},"nodeType":"YulFunctionCall","src":"5207:13:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5222:7:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5203:3:19"},"nodeType":"YulFunctionCall","src":"5203:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5196:6:19"},"nodeType":"YulFunctionCall","src":"5196:35:19"},"nodeType":"YulIf","src":"5193:55:19"},{"nodeType":"YulVariableDeclaration","src":"5257:30:19","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5284:2:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5271:12:19"},"nodeType":"YulFunctionCall","src":"5271:16:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5261:6:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"5314:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5323:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5326:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5316:6:19"},"nodeType":"YulFunctionCall","src":"5316:12:19"},"nodeType":"YulExpressionStatement","src":"5316:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5302:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"5310:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5299:2:19"},"nodeType":"YulFunctionCall","src":"5299:14:19"},"nodeType":"YulIf","src":"5296:34:19"},{"body":{"nodeType":"YulBlock","src":"5380:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5389:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5392:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5382:6:19"},"nodeType":"YulFunctionCall","src":"5382:12:19"},"nodeType":"YulExpressionStatement","src":"5382:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5353:2:19"},{"name":"length","nodeType":"YulIdentifier","src":"5357:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5349:3:19"},"nodeType":"YulFunctionCall","src":"5349:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"5366:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5345:3:19"},"nodeType":"YulFunctionCall","src":"5345:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5371:7:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5342:2:19"},"nodeType":"YulFunctionCall","src":"5342:37:19"},"nodeType":"YulIf","src":"5339:57:19"},{"nodeType":"YulAssignment","src":"5405:21:19","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"5419:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"5423:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5415:3:19"},"nodeType":"YulFunctionCall","src":"5415:11:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5405:6:19"}]},{"nodeType":"YulAssignment","src":"5435:16:19","value":{"name":"length","nodeType":"YulIdentifier","src":"5445:6:19"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"5435:6:19"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4729:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4740:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4752:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4760:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4768:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"4776:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"4784:6:19","type":""}],"src":"4655:802:19"},{"body":{"nodeType":"YulBlock","src":"5570:101:19","statements":[{"nodeType":"YulAssignment","src":"5580:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5592:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5603:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5588:3:19"},"nodeType":"YulFunctionCall","src":"5588:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5580:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5622:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5637:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"5645:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5633:3:19"},"nodeType":"YulFunctionCall","src":"5633:31:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5615:6:19"},"nodeType":"YulFunctionCall","src":"5615:50:19"},"nodeType":"YulExpressionStatement","src":"5615:50:19"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5539:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5550:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5561:4:19","type":""}],"src":"5462:209:19"},{"body":{"nodeType":"YulBlock","src":"5850:171:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5867:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5878:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5860:6:19"},"nodeType":"YulFunctionCall","src":"5860:21:19"},"nodeType":"YulExpressionStatement","src":"5860:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5901:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5912:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5897:3:19"},"nodeType":"YulFunctionCall","src":"5897:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5917:2:19","type":"","value":"21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5890:6:19"},"nodeType":"YulFunctionCall","src":"5890:30:19"},"nodeType":"YulExpressionStatement","src":"5890:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5940:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5951:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5936:3:19"},"nodeType":"YulFunctionCall","src":"5936:18:19"},{"hexValue":"4549503731323a20556e696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"5956:23:19","type":"","value":"EIP712: Uninitialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5929:6:19"},"nodeType":"YulFunctionCall","src":"5929:51:19"},"nodeType":"YulExpressionStatement","src":"5929:51:19"},{"nodeType":"YulAssignment","src":"5989:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6001:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6012:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5997:3:19"},"nodeType":"YulFunctionCall","src":"5997:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5989:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5827:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5841:4:19","type":""}],"src":"5676:345:19"},{"body":{"nodeType":"YulBlock","src":"6239:442:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6256:9:19"},{"name":"value0","nodeType":"YulIdentifier","src":"6267:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6249:6:19"},"nodeType":"YulFunctionCall","src":"6249:25:19"},"nodeType":"YulExpressionStatement","src":"6249:25:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6294:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6305:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6290:3:19"},"nodeType":"YulFunctionCall","src":"6290:18:19"},{"name":"value1","nodeType":"YulIdentifier","src":"6310:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6283:6:19"},"nodeType":"YulFunctionCall","src":"6283:34:19"},"nodeType":"YulExpressionStatement","src":"6283:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6337:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6348:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6333:3:19"},"nodeType":"YulFunctionCall","src":"6333:18:19"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"6357:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6365:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6353:3:19"},"nodeType":"YulFunctionCall","src":"6353:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6326:6:19"},"nodeType":"YulFunctionCall","src":"6326:83:19"},"nodeType":"YulExpressionStatement","src":"6326:83:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6429:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6440:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6425:3:19"},"nodeType":"YulFunctionCall","src":"6425:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"6445:3:19","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6418:6:19"},"nodeType":"YulFunctionCall","src":"6418:31:19"},"nodeType":"YulExpressionStatement","src":"6418:31:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6469:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6480:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6465:3:19"},"nodeType":"YulFunctionCall","src":"6465:19:19"},{"name":"value4","nodeType":"YulIdentifier","src":"6486:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6458:6:19"},"nodeType":"YulFunctionCall","src":"6458:35:19"},"nodeType":"YulExpressionStatement","src":"6458:35:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6519:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6530:3:19","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6515:3:19"},"nodeType":"YulFunctionCall","src":"6515:19:19"},{"name":"value3","nodeType":"YulIdentifier","src":"6536:6:19"},{"name":"value4","nodeType":"YulIdentifier","src":"6544:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"6502:12:19"},"nodeType":"YulFunctionCall","src":"6502:49:19"},"nodeType":"YulExpressionStatement","src":"6502:49:19"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6575:9:19"},{"name":"value4","nodeType":"YulIdentifier","src":"6586:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6571:3:19"},"nodeType":"YulFunctionCall","src":"6571:22:19"},{"kind":"number","nodeType":"YulLiteral","src":"6595:3:19","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6567:3:19"},"nodeType":"YulFunctionCall","src":"6567:32:19"},{"kind":"number","nodeType":"YulLiteral","src":"6601:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6560:6:19"},"nodeType":"YulFunctionCall","src":"6560:43:19"},"nodeType":"YulExpressionStatement","src":"6560:43:19"},{"nodeType":"YulAssignment","src":"6612:63:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6628:9:19"},{"arguments":[{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6647:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6655:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6643:3:19"},"nodeType":"YulFunctionCall","src":"6643:15:19"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6664:2:19","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6660:3:19"},"nodeType":"YulFunctionCall","src":"6660:7:19"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6639:3:19"},"nodeType":"YulFunctionCall","src":"6639:29:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6624:3:19"},"nodeType":"YulFunctionCall","src":"6624:45:19"},{"kind":"number","nodeType":"YulLiteral","src":"6671:3:19","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6620:3:19"},"nodeType":"YulFunctionCall","src":"6620:55:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6612:4:19"}]}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6176:9:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6187:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6195:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6203:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6211:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6219:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6230:4:19","type":""}],"src":"6026:655:19"},{"body":{"nodeType":"YulBlock","src":"6767:103:19","statements":[{"body":{"nodeType":"YulBlock","src":"6813:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6822:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6825:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6815:6:19"},"nodeType":"YulFunctionCall","src":"6815:12:19"},"nodeType":"YulExpressionStatement","src":"6815:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6788:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"6797:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6784:3:19"},"nodeType":"YulFunctionCall","src":"6784:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"6809:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6780:3:19"},"nodeType":"YulFunctionCall","src":"6780:32:19"},"nodeType":"YulIf","src":"6777:52:19"},{"nodeType":"YulAssignment","src":"6838:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6854:9:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6848:5:19"},"nodeType":"YulFunctionCall","src":"6848:16:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6838:6:19"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6733:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6744:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6756:6:19","type":""}],"src":"6686:184:19"},{"body":{"nodeType":"YulBlock","src":"6976:125:19","statements":[{"nodeType":"YulAssignment","src":"6986:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6998:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7009:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6994:3:19"},"nodeType":"YulFunctionCall","src":"6994:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6986:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7028:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7043:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7051:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7039:3:19"},"nodeType":"YulFunctionCall","src":"7039:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7021:6:19"},"nodeType":"YulFunctionCall","src":"7021:74:19"},"nodeType":"YulExpressionStatement","src":"7021:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6945:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6956:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6967:4:19","type":""}],"src":"6875:226:19"},{"body":{"nodeType":"YulBlock","src":"7161:382:19","statements":[{"nodeType":"YulAssignment","src":"7171:22:19","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7185:1:19","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"7188:4:19"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"7181:3:19"},"nodeType":"YulFunctionCall","src":"7181:12:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"7171:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"7202:38:19","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"7232:4:19"},{"kind":"number","nodeType":"YulLiteral","src":"7238:1:19","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7228:3:19"},"nodeType":"YulFunctionCall","src":"7228:12:19"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"7206:18:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"7279:31:19","statements":[{"nodeType":"YulAssignment","src":"7281:27:19","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7295:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7303:4:19","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7291:3:19"},"nodeType":"YulFunctionCall","src":"7291:17:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"7281:6:19"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"7259:18:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7252:6:19"},"nodeType":"YulFunctionCall","src":"7252:26:19"},"nodeType":"YulIf","src":"7249:61:19"},{"body":{"nodeType":"YulBlock","src":"7369:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7390:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7393:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7383:6:19"},"nodeType":"YulFunctionCall","src":"7383:88:19"},"nodeType":"YulExpressionStatement","src":"7383:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7491:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7494:4:19","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7484:6:19"},"nodeType":"YulFunctionCall","src":"7484:15:19"},"nodeType":"YulExpressionStatement","src":"7484:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7519:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7522:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7512:6:19"},"nodeType":"YulFunctionCall","src":"7512:15:19"},"nodeType":"YulExpressionStatement","src":"7512:15:19"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"7325:18:19"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7348:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7356:2:19","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7345:2:19"},"nodeType":"YulFunctionCall","src":"7345:14:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7322:2:19"},"nodeType":"YulFunctionCall","src":"7322:38:19"},"nodeType":"YulIf","src":"7319:218:19"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"7141:4:19","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"7150:6:19","type":""}],"src":"7106:437:19"},{"body":{"nodeType":"YulBlock","src":"7677:168:19","statements":[{"nodeType":"YulAssignment","src":"7687:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7699:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7710:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7695:3:19"},"nodeType":"YulFunctionCall","src":"7695:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7687:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7729:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7744:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7752:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7740:3:19"},"nodeType":"YulFunctionCall","src":"7740:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7722:6:19"},"nodeType":"YulFunctionCall","src":"7722:74:19"},"nodeType":"YulExpressionStatement","src":"7722:74:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7816:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7827:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7812:3:19"},"nodeType":"YulFunctionCall","src":"7812:18:19"},{"name":"value1","nodeType":"YulIdentifier","src":"7832:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7805:6:19"},"nodeType":"YulFunctionCall","src":"7805:34:19"},"nodeType":"YulExpressionStatement","src":"7805:34:19"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7638:9:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7649:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7657:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7668:4:19","type":""}],"src":"7548:297:19"},{"body":{"nodeType":"YulBlock","src":"7987:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"7997:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8017:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8011:5:19"},"nodeType":"YulFunctionCall","src":"8011:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8001:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8072:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"8080:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8068:3:19"},"nodeType":"YulFunctionCall","src":"8068:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"8087:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"8092:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"8033:34:19"},"nodeType":"YulFunctionCall","src":"8033:66:19"},"nodeType":"YulExpressionStatement","src":"8033:66:19"},{"nodeType":"YulAssignment","src":"8108:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8119:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"8124:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8115:3:19"},"nodeType":"YulFunctionCall","src":"8115:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8108:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7963:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7968:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7979:3:19","type":""}],"src":"7850:287:19"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xff00000000000000000000000000000000000000000000000000000000000000))\n let _1 := 32\n mstore(add(headStart, _1), 224)\n let tail_1 := abi_encode_string(value1, add(headStart, 224))\n mstore(add(headStart, 64), sub(tail_1, headStart))\n let tail_2 := abi_encode_string(value2, tail_1)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), sub(tail_2, headStart))\n let pos := tail_2\n let length := mload(value6)\n mstore(tail_2, length)\n pos := add(tail_2, _1)\n let srcPtr := add(value6, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256t_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n value3 := add(_2, 32)\n value4 := length\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"EIP712: Uninitialized\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 96), 128)\n mstore(add(headStart, 128), value4)\n calldatacopy(add(headStart, 160), value3, value4)\n mstore(add(add(headStart, value4), 160), 0)\n tail := add(add(headStart, and(add(value4, 31), not(31))), 160)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"636":[{"length":32,"start":2638},{"length":32,"start":2679},{"length":32,"start":3097}]},"linkReferences":{},"object":"6080604052600436106100f35760003560e01c806384b0196e1161008a578063b908afa811610059578063b908afa814610335578063c42ef38c14610369578063d547741f1461039d578063e09ee870146103bd57600080fd5b806384b0196e1461023d57806391d1485414610265578063a217fddf146102ca578063ad3cb1cc146102df57600080fd5b80634f1ef286116100c65780634f1ef286146101cc57806352d1902d146101df57806375b238fc146101f45780638129fc1c1461022857600080fd5b806301ffc9a7146100f8578063248a9ca31461012d5780632f2ff15d1461018a57806336568abe146101ac575b600080fd5b34801561010457600080fd5b506101186101133660046110c6565b6103dd565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061017c610148366004611108565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610124565b34801561019657600080fd5b506101aa6101a536600461113d565b610476565b005b3480156101b857600080fd5b506101aa6101c736600461113d565b6104c0565b6101aa6101da36600461117f565b610511565b3480156101eb57600080fd5b5061017c610530565b34801561020057600080fd5b5061017c7f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde81565b34801561023457600080fd5b506101aa61055f565b34801561024957600080fd5b50610252610704565b6040516101249796959493929190611291565b34801561027157600080fd5b5061011861028036600461113d565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156102d657600080fd5b5061017c600081565b3480156102eb57600080fd5b506103286040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101249190611343565b34801561034157600080fd5b5061017c7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f981565b34801561037557600080fd5b5061017c7f1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f81565b3480156103a957600080fd5b506101aa6103b836600461113d565b610805565b3480156103c957600080fd5b506101186103d8366004611356565b610849565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061047057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546104b0816108c1565b6104ba83836108ce565b50505050565b6001600160a01b0381163314610502576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050c828261099d565b505050565b610519610a43565b61052282610afc565b61052c8282610b26565b5050565b600061053a610c0e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156105aa5750825b905060008267ffffffffffffffff1660011480156105c75750303b155b9050811580156105d5575080155b1561060c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561064057845468ff00000000000000001916680100000000000000001785555b610648610c57565b610650610c57565b61065b6000336108ce565b506106867f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde336108ce565b506106b17fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f9336108ce565b5083156106fd57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100805490915015801561074357506001810154155b6107ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064015b60405180910390fd5b6107b6610c5f565b6107be610d34565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461083f816108c1565b6104ba838361099d565b60007f1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f610875816108c1565b7f5ec4b4254fe4f840b0f2ee94ee4e2d3b44b52badb9327a5b8baa90e75cc8395d87878787876040516108ac9594939291906113ea565b60405180910390a15060019695505050505050565b6108cb8133610d85565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16610993576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556109493390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610470565b6000915050610470565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615610993576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610470565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610adc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ad07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610afa5760405163703e46dd60e11b815260040160405180910390fd5b565b7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f961052c816108c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b80575060408051601f3d908101601f19168201909252610b7d91810190611437565b60015b610ba857604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107a5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610c04576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016107a5565b61050c8383610e12565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afa5760405163703e46dd60e11b815260040160405180910390fd5b610afa610e68565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610cb090611450565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdc90611450565b8015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610cb090611450565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661052c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016107a5565b610e1b82610ecf565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e605761050c8282610f5e565b61052c610fd4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610afa576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b03163b600003610f0557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107a5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610f7b919061148a565b600060405180830381855af49150503d8060008114610fb6576040519150601f19603f3d011682016040523d82523d6000602084013e610fbb565b606091505b5091509150610fcb85838361100c565b95945050505050565b3415610afa576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826110215761101c82611084565b61107d565b815115801561103857506001600160a01b0384163b155b1561107a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016107a5565b50805b9392505050565b8051156110945780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461107d57600080fd5b60006020828403121561111a57600080fd5b5035919050565b80356001600160a01b038116811461113857600080fd5b919050565b6000806040838503121561115057600080fd5b8235915061116060208401611121565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561119257600080fd5b61119b83611121565b9150602083013567ffffffffffffffff808211156111b857600080fd5b818501915085601f8301126111cc57600080fd5b8135818111156111de576111de611169565b604051601f8201601f19908116603f0116810190838211818310171561120657611206611169565b8160405282815288602084870101111561121f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561125c578181015183820152602001611244565b50506000910152565b6000815180845261127d816020860160208601611241565b601f01601f19169290920160200192915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526112cd60e084018a611265565b83810360408501526112df818a611265565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561133157835183529284019291840191600101611315565b50909c9b505050505050505050505050565b60208152600061107d6020830184611265565b60008060008060006080868803121561136e57600080fd5b853594506020860135935061138560408701611121565b9250606086013567ffffffffffffffff808211156113a257600080fd5b818801915088601f8301126113b657600080fd5b8135818111156113c557600080fd5b8960208285010111156113d757600080fd5b9699959850939650602001949392505050565b8581528460208201526001600160a01b038416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561144957600080fd5b5051919050565b600181811c9082168061146457607f821691505b60208210810361148457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161149c818460208701611241565b919091019291505056fea264697066735822122014b9ca837310f9586a089b114c19232df03a7f4c1393211e5a6d766f368ebdf364736f6c63430008140033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x84B0196E GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xB908AFA8 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xB908AFA8 EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0xC42EF38C EQ PUSH2 0x369 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x39D JUMPI DUP1 PUSH4 0xE09EE870 EQ PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x84B0196E EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F1EF286 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x1F4 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF8 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x1AC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x104 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x113 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C6 JUMP JUMPDEST PUSH2 0x3DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x139 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH2 0x148 CALLDATASIZE PUSH1 0x4 PUSH2 0x1108 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x1A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x113D JUMP JUMPDEST PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x113D JUMP JUMPDEST PUSH2 0x4C0 JUMP JUMPDEST PUSH2 0x1AA PUSH2 0x1DA CALLDATASIZE PUSH1 0x4 PUSH2 0x117F JUMP JUMPDEST PUSH2 0x511 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH2 0x530 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x234 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x55F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x252 PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1291 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x280 CALLDATASIZE PUSH1 0x4 PUSH2 0x113D JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x328 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x124 SWAP2 SWAP1 PUSH2 0x1343 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x341 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17C PUSH32 0x1854DEBF63B284C3F1DDA5521BE910EA59783C0DFF877E7649F790D06729A12F DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AA PUSH2 0x3B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x113D JUMP JUMPDEST PUSH2 0x805 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x118 PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1356 JUMP JUMPDEST PUSH2 0x849 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x470 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x4B0 DUP2 PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0x4BA DUP4 DUP4 PUSH2 0x8CE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x502 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x50C DUP3 DUP3 PUSH2 0x99D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x519 PUSH2 0xA43 JUMP JUMPDEST PUSH2 0x522 DUP3 PUSH2 0xAFC JUMP JUMPDEST PUSH2 0x52C DUP3 DUP3 PUSH2 0xB26 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53A PUSH2 0xC0E JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x5AA JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x5C7 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x5D5 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x60C JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x640 JUMPI DUP5 SLOAD PUSH9 0xFF0000000000000000 NOT AND PUSH9 0x10000000000000000 OR DUP6 SSTORE JUMPDEST PUSH2 0x648 PUSH2 0xC57 JUMP JUMPDEST PUSH2 0x650 PUSH2 0xC57 JUMP JUMPDEST PUSH2 0x65B PUSH1 0x0 CALLER PUSH2 0x8CE JUMP JUMPDEST POP PUSH2 0x686 PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE CALLER PUSH2 0x8CE JUMP JUMPDEST POP PUSH2 0x6B1 PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 CALLER PUSH2 0x8CE JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x6FD JUMPI DUP5 SLOAD PUSH9 0xFF0000000000000000 NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 DUP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 DUP1 SLOAD SWAP1 SWAP2 POP ISZERO DUP1 ISZERO PUSH2 0x743 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0x7AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4549503731323A20556E696E697469616C697A65640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7B6 PUSH2 0xC5F JUMP JUMPDEST PUSH2 0x7BE PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 SWAP13 SWAP4 SWAP12 POP SWAP2 SWAP10 POP CHAINID SWAP9 POP ADDRESS SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x83F DUP2 PUSH2 0x8C1 JUMP JUMPDEST PUSH2 0x4BA DUP4 DUP4 PUSH2 0x99D JUMP JUMPDEST PUSH1 0x0 PUSH32 0x1854DEBF63B284C3F1DDA5521BE910EA59783C0DFF877E7649F790D06729A12F PUSH2 0x875 DUP2 PUSH2 0x8C1 JUMP JUMPDEST PUSH32 0x5EC4B4254FE4F840B0F2EE94EE4E2D3B44B52BADB9327A5B8BAA90E75CC8395D DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x8AC SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8CB DUP2 CALLER PUSH2 0xD85 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x993 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x949 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x993 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x470 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0xADC JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xAD0 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 PUSH2 0x52C DUP2 PUSH2 0x8C1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xB80 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xB7D SWAP2 DUP2 ADD SWAP1 PUSH2 0x1437 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xBA8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7A5 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0xC04 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x7A5 JUMP JUMPDEST PUSH2 0x50C DUP4 DUP4 PUSH2 0xE12 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAFA PUSH2 0xE68 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 SWAP2 PUSH2 0xCB0 SWAP1 PUSH2 0x1450 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xCDC SWAP1 PUSH2 0x1450 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xD29 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xCFE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xD29 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xD0C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 SWAP2 PUSH2 0xCB0 SWAP1 PUSH2 0x1450 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x52C JUMPI PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x7A5 JUMP JUMPDEST PUSH2 0xE1B DUP3 PUSH2 0xECF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0xE60 JUMPI PUSH2 0x50C DUP3 DUP3 PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x52C PUSH2 0xFD4 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xF05 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7A5 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0xF7B SWAP2 SWAP1 PUSH2 0x148A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFB6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFBB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xFCB DUP6 DUP4 DUP4 PUSH2 0x100C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1021 JUMPI PUSH2 0x101C DUP3 PUSH2 0x1084 JUMP JUMPDEST PUSH2 0x107D JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1038 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x107A JUMPI PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7A5 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1094 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x107D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x111A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x1160 PUSH1 0x20 DUP5 ADD PUSH2 0x1121 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x119B DUP4 PUSH2 0x1121 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x11B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x11DE JUMPI PUSH2 0x11DE PUSH2 0x1169 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1206 JUMPI PUSH2 0x1206 PUSH2 0x1169 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x121F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x125C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1244 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x127D DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1241 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP9 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 DUP2 DUP5 ADD MSTORE PUSH2 0x12CD PUSH1 0xE0 DUP5 ADD DUP11 PUSH2 0x1265 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x12DF DUP2 DUP11 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD DUP8 SWAP1 MSTORE DUP5 DUP2 SUB PUSH1 0xC0 DUP7 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE DUP4 DUP8 ADD SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1331 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1315 JUMP JUMPDEST POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x107D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x136E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1385 PUSH1 0x40 DUP8 ADD PUSH2 0x1121 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x13A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x13C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x13D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP PUSH1 0x20 ADD SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP6 DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE DUP2 PUSH1 0x80 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0xA0 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0xA0 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT AND ADD ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1464 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1484 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x149C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1241 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xB9 0xCA DUP4 PUSH20 0x10F9586A089B114C19232DF03A7F4C1393211E5A PUSH14 0x766F368EBDF364736F6C63430008 EQ STOP CALLER ","sourceMap":"548:1269:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:0;;;;;;;;;;-1:-1:-1;3443:202:0;;;;;:::i;:::-;;:::i;:::-;;;516:14:19;;509:22;491:41;;479:2;464:18;3443:202:0;;;;;;;;4759:191;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;;4759:191;;;;874:25:19;;;862:2;847:18;4759:191:0;728:177:19;5246:136:0;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;:::-;;6348:245;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;4158:214:2:-;;;;;;:::i;:::-;;:::i;3705:134::-;;;;;;;;;;;;;:::i;686:60:18:-;;;;;;;;;;;;723:23;686:60;;891:256;;;;;;;;;;;;;:::i;5173:903:4:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;3809:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;;;;;;;3732:207;2317:49;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;1819:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;752:64:18:-;;;;;;;;;;;;791:25;752:64;;822:62;;;;;;;;;;;;860:24;822:62;;5662:138:0;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;1380:434:18:-;;;;;;;;;;-1:-1:-1;1380:434:18;;;;;:::i;:::-;;:::i;3443:202:0:-;3528:4;3551:47;;;3566:32;3551:47;;:87;;-1:-1:-1;1148:25:5;1133:40;;;;3602:36:0;3544:94;3443:202;-1:-1:-1;;3443:202:0:o;5246:136::-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;-1:-1:-1;;;;;6441:34:0;;966:10:3;6441:34:0;6437:102;;6498:30;;;;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;4158:214:2:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;3705:134::-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;1327:66:9::1;3705:134:2::0;:::o;891:256:18:-;8870:21:1;4302:15;;;;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:1;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:1;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;5013:22:1;;;;;4979:67;942:22:18::1;:20;:22::i;:::-;974:24;:22;:24::i;:::-;1008:42;2362:4:0;1039:10:18;1008;:42::i;:::-;;1060:34;723:23;1083:10;1060;:34::i;:::-;;1104:36;791:25;1129:10;1104;:36::i;:::-;;5070:14:1::0;5066:101;;;5100:23;;-1:-1:-1;;5100:23:1;;;5142:14;;-1:-1:-1;5615:50:19;;5142:14:1;;5603:2:19;5588:18;5142:14:1;;;;;;;5066:101;4092:1081;;;;;891:256:18:o;5173:903:4:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;2839:21;5777:13;;5511:45;;-1:-1:-1;5777:18:4;:43;;;;-1:-1:-1;5799:16:4;;;;:21;5777:43;5769:77;;;;;;;5878:2:19;5769:77:4;;;5860:21:19;5917:2;5897:18;;;5890:30;5956:23;5936:18;;;5929:51;5997:18;;5769:77:4;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;5857:212;;;;-1:-1:-1;5857:212:4;;-1:-1:-1;5965:13:4;;-1:-1:-1;6000:4:4;;-1:-1:-1;6027:1:4;-1:-1:-1;6043:16:4;-1:-1:-1;5857:212:4;-1:-1:-1;;5173:903:4:o;5662:138:0:-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;1380:434:18:-:0;1525:12;860:24;3191:16:0;3202:4;3191:10;:16::i;:::-;1739:47:18::1;1744:13;1759:7;1768:11;1781:4;;1739:47;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;1803:4:18::1;::::0;1380:434;-1:-1:-1;;;;;;1380:434:18:o;4148:103:0:-;4214:30;4225:4;966:10:3;4214::0;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;;;;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:3;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;;;;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:3;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4599:312:2;4679:4;-1:-1:-1;;;;;4688:6:2;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:2;:32;1327:66:9;2035:53;-1:-1:-1;;;;;2035:53:9;;1957:138;4749:32:2;-1:-1:-1;;;;;4749:42:2;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:2;;;;;;;;;;;4654:251;4599:312::o;1153:131:18:-;791:25;3191:16:0;3202:4;3191:10;:16::i;6052:538:2:-;6169:17;-1:-1:-1;;;;;6151:50:2;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:2;;;;;;;;-1:-1:-1;;6151:52:2;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:2;;-1:-1:-1;;;;;7039:55:19;;6513:60:2;;;7021:74:19;6994:18;;6513:60:2;6875:226:19;6147:437:2;1327:66:9;6245:40:2;;6241:120;;6312:34;;;;;;;;874:25:19;;;847:18;;6312:34:2;728:177:19;6241:120:2;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:2;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:2;;;;;;;;;;;3231:65:0;6931:20:1;:18;:20::i;6300:155:4:-;6441:7;6434:14;;6354:13;;2839:21;;6434:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6300:155;:::o;6682:161::-;6826:10;6819:17;;6739:13;;2839:21;;6819:17;;;:::i;4381:197:0:-;3809:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;;;;4464:108;;4514:47;;;;;-1:-1:-1;;;;;7740:55:19;;4514:47:0;;;7722:74:19;7812:18;;;7805:34;;;7695:18;;4514:47:0;7548:297:19;2779:335:9;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:9;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;7084:141:1:-;8870:21;8560:40;;;;;;7146:73;;7191:17;;;;;;;;;;;;;;2186:281:9;2263:17;-1:-1:-1;;;;;2263:29:9;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:9;;-1:-1:-1;;;;;7039:55:19;;2320:47:9;;;7021:74:19;6994:18;;2320:47:9;6875:226:19;2259:119:9;1327:66;2387:73;;;;-1:-1:-1;;;;;2387:73:9;;;;;;;;;;2186:281::o;4106:253:11:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:11;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:11:o;6598:122:9:-;6648:9;:13;6644:70;;6684:19;;;;;;;;;;;;;;4625:582:11;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:11;;;:23;5045:49;5041:119;;;5121:24;;;;;-1:-1:-1;;;;;7039:55:19;;5121:24:11;;;7021:74:19;6994:18;;5121:24:11;6875:226:19;5041:119:11;-1:-1:-1;5180:10:11;4793:408;4625:582;;;;;:::o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;;;;;;;;;;;;;14:332:19;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;543:180;602:6;655:2;643:9;634:7;630:23;626:32;623:52;;;671:1;668;661:12;623:52;-1:-1:-1;694:23:19;;543:180;-1:-1:-1;543:180:19:o;910:196::-;978:20;;-1:-1:-1;;;;;1027:54:19;;1017:65;;1007:93;;1096:1;1093;1086:12;1007:93;910:196;;;:::o;1111:254::-;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:52;;;1256:1;1253;1246:12;1208:52;1292:9;1279:23;1269:33;;1321:38;1355:2;1344:9;1340:18;1321:38;:::i;:::-;1311:48;;1111:254;;;;;:::o;1370:184::-;-1:-1:-1;;;1419:1:19;1412:88;1519:4;1516:1;1509:15;1543:4;1540:1;1533:15;1559:995;1636:6;1644;1697:2;1685:9;1676:7;1672:23;1668:32;1665:52;;;1713:1;1710;1703:12;1665:52;1736:29;1755:9;1736:29;:::i;:::-;1726:39;;1816:2;1805:9;1801:18;1788:32;1839:18;1880:2;1872:6;1869:14;1866:34;;;1896:1;1893;1886:12;1866:34;1934:6;1923:9;1919:22;1909:32;;1979:7;1972:4;1968:2;1964:13;1960:27;1950:55;;2001:1;1998;1991:12;1950:55;2037:2;2024:16;2059:2;2055;2052:10;2049:36;;;2065:18;;:::i;:::-;2140:2;2134:9;2108:2;2194:13;;-1:-1:-1;;2190:22:19;;;2214:2;2186:31;2182:40;2170:53;;;2238:18;;;2258:22;;;2235:46;2232:72;;;2284:18;;:::i;:::-;2324:10;2320:2;2313:22;2359:2;2351:6;2344:18;2399:7;2394:2;2389;2385;2381:11;2377:20;2374:33;2371:53;;;2420:1;2417;2410:12;2371:53;2476:2;2471;2467;2463:11;2458:2;2450:6;2446:15;2433:46;2521:1;2516:2;2511;2503:6;2499:15;2495:24;2488:35;2542:6;2532:16;;;;;;;1559:995;;;;;:::o;2559:250::-;2644:1;2654:113;2668:6;2665:1;2662:13;2654:113;;;2744:11;;;2738:18;2725:11;;;2718:39;2690:2;2683:10;2654:113;;;-1:-1:-1;;2801:1:19;2783:16;;2776:27;2559:250::o;2814:271::-;2856:3;2894:5;2888:12;2921:6;2916:3;2909:19;2937:76;3006:6;2999:4;2994:3;2990:14;2983:4;2976:5;2972:16;2937:76;:::i;:::-;3067:2;3046:15;-1:-1:-1;;3042:29:19;3033:39;;;;3074:4;3029:50;;2814:271;-1:-1:-1;;2814:271:19:o;3090:1335::-;3487:66;3479:6;3475:79;3464:9;3457:98;3438:4;3574:2;3612:3;3607:2;3596:9;3592:18;3585:31;3639:46;3680:3;3669:9;3665:19;3657:6;3639:46;:::i;:::-;3733:9;3725:6;3721:22;3716:2;3705:9;3701:18;3694:50;3767:33;3793:6;3785;3767:33;:::i;:::-;3831:2;3816:18;;3809:34;;;-1:-1:-1;;;;;3880:55:19;;3874:3;3859:19;;3852:84;3967:3;3952:19;;3945:35;;;4017:22;;;4011:3;3996:19;;3989:51;4089:13;;4111:22;;;4187:15;;;;-1:-1:-1;4149:15:19;;;;-1:-1:-1;4230:169:19;4244:6;4241:1;4238:13;4230:169;;;4305:13;;4293:26;;4374:15;;;;4339:12;;;;4266:1;4259:9;4230:169;;;-1:-1:-1;4416:3:19;;3090:1335;-1:-1:-1;;;;;;;;;;;;3090:1335:19:o;4430:220::-;4579:2;4568:9;4561:21;4542:4;4599:45;4640:2;4629:9;4625:18;4617:6;4599:45;:::i;4655:802::-;4752:6;4760;4768;4776;4784;4837:3;4825:9;4816:7;4812:23;4808:33;4805:53;;;4854:1;4851;4844:12;4805:53;4890:9;4877:23;4867:33;;4947:2;4936:9;4932:18;4919:32;4909:42;;4970:38;5004:2;4993:9;4989:18;4970:38;:::i;:::-;4960:48;;5059:2;5048:9;5044:18;5031:32;5082:18;5123:2;5115:6;5112:14;5109:34;;;5139:1;5136;5129:12;5109:34;5177:6;5166:9;5162:22;5152:32;;5222:7;5215:4;5211:2;5207:13;5203:27;5193:55;;5244:1;5241;5234:12;5193:55;5284:2;5271:16;5310:2;5302:6;5299:14;5296:34;;;5326:1;5323;5316:12;5296:34;5371:7;5366:2;5357:6;5353:2;5349:15;5345:24;5342:37;5339:57;;;5392:1;5389;5382:12;5339:57;4655:802;;;;-1:-1:-1;4655:802:19;;-1:-1:-1;5423:2:19;5415:11;;5445:6;4655:802;-1:-1:-1;;;4655:802:19:o;6026:655::-;6267:6;6256:9;6249:25;6310:6;6305:2;6294:9;6290:18;6283:34;-1:-1:-1;;;;;6357:6:19;6353:55;6348:2;6337:9;6333:18;6326:83;6445:3;6440:2;6429:9;6425:18;6418:31;6486:6;6480:3;6469:9;6465:19;6458:35;6544:6;6536;6530:3;6519:9;6515:19;6502:49;6601:1;6571:22;;;6595:3;6567:32;;;6560:43;;;;6664:2;6643:15;;;-1:-1:-1;;6639:29:19;6624:45;6620:55;;6026:655;-1:-1:-1;;;;6026:655:19:o;6686:184::-;6756:6;6809:2;6797:9;6788:7;6784:23;6780:32;6777:52;;;6825:1;6822;6815:12;6777:52;-1:-1:-1;6848:16:19;;6686:184;-1:-1:-1;6686:184:19:o;7106:437::-;7185:1;7181:12;;;;7228;;;7249:61;;7303:4;7295:6;7291:17;7281:27;;7249:61;7356:2;7348:6;7345:14;7325:18;7322:38;7319:218;;-1:-1:-1;;;7390:1:19;7383:88;7494:4;7491:1;7484:15;7522:4;7519:1;7512:15;7319:218;;7106:437;;;:::o;7850:287::-;7979:3;8017:6;8011:13;8033:66;8092:6;8087:3;8080:4;8072:6;8068:17;8033:66;:::i;:::-;8115:16;;;;;7850:287;-1:-1:-1;;7850:287:19:o"},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","DEFAULT_ADMIN_ROLE()":"a217fddf","SENDER_ROLE()":"c42ef38c","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","UPGRADE_ROLE()":"b908afa8","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","send(uint256,uint256,address,bytes)":"e09ee870","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Send\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SENDER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"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\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/business/BusinessContractExample.sol\":\"BusinessContractExample\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x85462422a22578744581e012e9aa0a391958cb360288b0b63f29bf0431d70327\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bc529e2b9b28da5d26da451058250d85afcaa3c5083ee273ac68fa6bf956b78\",\"dweb:/ipfs/Qmd3Aq59ztmoVmHigsaR4YjkXWKERVpjfQ4a2PHk7Ke6Rx\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/business/BusinessContractExample.sol\":{\"keccak256\":\"0xdbc42aedc31f6ea5c049aa8eb2a2e0ef4a52f442417d81b37ffb2504e2840cee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86af5134fd0f3c142f0a4c4abd3b1784dcb1a5e54a0e546d133b209b6fe12cbf\",\"dweb:/ipfs/Qmbg4zCSsaWkhHSyefeRhTqipyTAJzxELDgAGJezm9faUm\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}},"IBusinessContract":{"abi":[{"inputs":[{"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"internalType":"uint256","name":"from_id","type":"uint256"},{"internalType":"address","name":"from_sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"send(uint256,uint256,address,bytes)":"e09ee870"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/business/BusinessContractExample.sol\":\"IBusinessContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x85462422a22578744581e012e9aa0a391958cb360288b0b63f29bf0431d70327\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bc529e2b9b28da5d26da451058250d85afcaa3c5083ee273ac68fa6bf956b78\",\"dweb:/ipfs/Qmd3Aq59ztmoVmHigsaR4YjkXWKERVpjfQ4a2PHk7Ke6Rx\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/business/BusinessContractExample.sol\":{\"keccak256\":\"0xdbc42aedc31f6ea5c049aa8eb2a2e0ef4a52f442417d81b37ffb2504e2840cee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86af5134fd0f3c142f0a4c4abd3b1784dcb1a5e54a0e546d133b209b6fe12cbf\",\"dweb:/ipfs/Qmbg4zCSsaWkhHSyefeRhTqipyTAJzxELDgAGJezm9faUm\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}}}}} \ No newline at end of file diff --git a/contracts/artifacts/build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json b/contracts/artifacts/build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json deleted file mode 100644 index 7ce580dc..00000000 --- a/contracts/artifacts/build-info/af6b6b3d7f4b7811cb30d97c6e1d4bb9.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"af6b6b3d7f4b7811cb30d97c6e1d4bb9","_format":"hh-sol-build-info-1","solcVersion":"0.8.20","solcLongVersion":"0.8.20+commit.a1b79de6","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n struct AccessControlStorage {\n mapping(bytes32 role => RoleData) _roles;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n assembly {\n $.slot := AccessControlStorageLocation\n }\n }\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n function __AccessControl_init() internal onlyInitializing {\n }\n\n function __AccessControl_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n AccessControlStorage storage $ = _getAccessControlStorage();\n bytes32 previousAdminRole = getRoleAdmin(role);\n $._roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (!hasRole(role, account)) {\n $._roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (hasRole(role, account)) {\n $._roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reininitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n assembly {\n $.slot := INITIALIZABLE_STORAGE\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address private immutable __self = address(this);\n\n /**\n * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n * during an upgrade.\n */\n string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n /**\n * @dev The call is from an unauthorized context.\n */\n error UUPSUnauthorizedCallContext();\n\n /**\n * @dev The storage `slot` is unsupported as a UUID.\n */\n error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n _checkProxy();\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n _checkNotDelegated();\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n return ERC1967Utils.IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data);\n }\n\n /**\n * @dev Reverts if the execution is not performed via delegatecall or the execution\n * context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n * See {_onlyProxy}.\n */\n function _checkProxy() internal view virtual {\n if (\n address(this) == __self || // Must be called through delegatecall\n ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n ) {\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Reverts if the execution is performed via delegatecall.\n * See {notDelegated}.\n */\n function _checkNotDelegated() internal view virtual {\n if (address(this) != __self) {\n // Must not be called through delegatecall\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n *\n * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n * is expected to be the implementation slot in ERC1967.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n revert UUPSUnsupportedProxiableUUID(slot);\n }\n ERC1967Utils.upgradeToAndCall(newImplementation, data);\n } catch {\n // The implementation is not UUPS\n revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @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 *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.20;\n\nimport {MessageHashUtils} from \"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\";\nimport {IERC5267} from \"@openzeppelin/contracts/interfaces/IERC5267.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n */\nabstract contract EIP712Upgradeable is Initializable, IERC5267 {\n bytes32 private constant TYPE_HASH =\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n /// @custom:storage-location erc7201:openzeppelin.storage.EIP712\n struct EIP712Storage {\n /// @custom:oz-renamed-from _HASHED_NAME\n bytes32 _hashedName;\n /// @custom:oz-renamed-from _HASHED_VERSION\n bytes32 _hashedVersion;\n\n string _name;\n string _version;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.EIP712\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant EIP712StorageLocation = 0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100;\n\n function _getEIP712Storage() private pure returns (EIP712Storage storage $) {\n assembly {\n $.slot := EIP712StorageLocation\n }\n }\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n function __EIP712_init(string memory name, string memory version) internal onlyInitializing {\n __EIP712_init_unchained(name, version);\n }\n\n function __EIP712_init_unchained(string memory name, string memory version) internal onlyInitializing {\n EIP712Storage storage $ = _getEIP712Storage();\n $._name = name;\n $._version = version;\n\n // Reset prior values in storage if upgrading\n $._hashedName = 0;\n $._hashedVersion = 0;\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n return _buildDomainSeparator();\n }\n\n function _buildDomainSeparator() private view returns (bytes32) {\n return keccak256(abi.encode(TYPE_HASH, _EIP712NameHash(), _EIP712VersionHash(), block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n\n /**\n * @dev See {IERC-5267}.\n */\n function eip712Domain()\n public\n view\n virtual\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n )\n {\n EIP712Storage storage $ = _getEIP712Storage();\n // If the hashed name and version in storage are non-zero, the contract hasn't been properly initialized\n // and the EIP712 domain is not reliable, as it will be missing name and version.\n require($._hashedName == 0 && $._hashedVersion == 0, \"EIP712: Uninitialized\");\n\n return (\n hex\"0f\", // 01111\n _EIP712Name(),\n _EIP712Version(),\n block.chainid,\n address(this),\n bytes32(0),\n new uint256[](0)\n );\n }\n\n /**\n * @dev The name parameter for the EIP712 domain.\n *\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n * are a concern.\n */\n function _EIP712Name() internal view virtual returns (string memory) {\n EIP712Storage storage $ = _getEIP712Storage();\n return $._name;\n }\n\n /**\n * @dev The version parameter for the EIP712 domain.\n *\n * NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n * are a concern.\n */\n function _EIP712Version() internal view virtual returns (string memory) {\n EIP712Storage storage $ = _getEIP712Storage();\n return $._version;\n }\n\n /**\n * @dev The hash of the name parameter for the EIP712 domain.\n *\n * NOTE: In previous versions this function was virtual. In this version you should override `_EIP712Name` instead.\n */\n function _EIP712NameHash() internal view returns (bytes32) {\n EIP712Storage storage $ = _getEIP712Storage();\n string memory name = _EIP712Name();\n if (bytes(name).length > 0) {\n return keccak256(bytes(name));\n } else {\n // If the name is empty, the contract may have been upgraded without initializing the new storage.\n // We return the name hash in storage if non-zero, otherwise we assume the name is empty by design.\n bytes32 hashedName = $._hashedName;\n if (hashedName != 0) {\n return hashedName;\n } else {\n return keccak256(\"\");\n }\n }\n }\n\n /**\n * @dev The hash of the version parameter for the EIP712 domain.\n *\n * NOTE: In previous versions this function was virtual. In this version you should override `_EIP712Version` instead.\n */\n function _EIP712VersionHash() internal view returns (bytes32) {\n EIP712Storage storage $ = _getEIP712Storage();\n string memory version = _EIP712Version();\n if (bytes(version).length > 0) {\n return keccak256(bytes(version));\n } else {\n // If the version is empty, the contract may have been upgraded without initializing the new storage.\n // We return the version hash in storage if non-zero, otherwise we assume the version is empty by design.\n bytes32 hashedVersion = $._hashedVersion;\n if (hashedVersion != 0) {\n return hashedVersion;\n } else {\n return keccak256(\"\");\n }\n }\n }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\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 *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {AccessControl-_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)\n\npragma solidity ^0.8.20;\n\ninterface IERC5267 {\n /**\n * @dev MAY be emitted to signal that the domain could have changed.\n */\n event EIP712DomainChanged();\n\n /**\n * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n * signature.\n */\n function eip712Domain()\n external\n view\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n );\n}\n"},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n */\nlibrary ERC1967Utils {\n // We re-declare ERC-1967 events here because they can't be used directly from IERC1967.\n // This will be fixed in Solidity 0.8.21. At that point we should remove these events.\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error AddressInsufficientBalance(address account);\n\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedInnerCall();\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert AddressInsufficientBalance(address(this));\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert FailedInnerCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {FailedInnerCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert AddressInsufficientBalance(address(this));\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n * unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {FailedInnerCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert FailedInnerCall();\n }\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS\n }\n\n /**\n * @dev The signature derives the `address(0)`.\n */\n error ECDSAInvalidSignature();\n\n /**\n * @dev The signature has an invalid length.\n */\n error ECDSAInvalidSignatureLength(uint256 length);\n\n /**\n * @dev The signature has an S value that is in the upper half order.\n */\n error ECDSAInvalidSignatureS(bytes32 s);\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n * and a bytes32 providing additional information about the error.\n *\n * If no error is returned, then the address can be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n */\n function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n /// @solidity memory-safe-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]\n */\n function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {\n unchecked {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n // We do not check for an overflow here since the shift operation results in 0 or 1.\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address, RecoverError, bytes32) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS, s);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\n }\n\n return (signer, RecoverError.NoError, bytes32(0));\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n */\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert ECDSAInvalidSignature();\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\n } else if (error == RecoverError.InvalidSignatureS) {\n revert ECDSAInvalidSignatureS(errorArg);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MessageHashUtils.sol)\n\npragma solidity ^0.8.20;\n\nimport {Strings} from \"../Strings.sol\";\n\n/**\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n *\n * The library provides methods for generating a hash of a message that conforms to the\n * https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n * specifications.\n */\nlibrary MessageHashUtils {\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing a bytes32 `messageHash` with\n * `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n * keccak256, although any bytes32 value can be safely used because the final digest will\n * be re-hashed.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\n /// @solidity memory-safe-assembly\n assembly {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\") // 32 is the bytes-length of messageHash\n mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\n digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\n }\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing an arbitrary `message` with\n * `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\n return\n keccak256(bytes.concat(\"\\x19Ethereum Signed Message:\\n\", bytes(Strings.toString(message.length)), message));\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-191 signed data with version\n * `0x00` (data with intended validator).\n *\n * The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n * `validator` address. Then hashing the result.\n *\n * See {ECDSA-recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(hex\"19_00\", validator, data));\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\n *\n * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n * `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n *\n * See {ECDSA-recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\n /// @solidity memory-safe-assembly\n assembly {\n let ptr := mload(0x40)\n mstore(ptr, hex\"19_01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n digest := keccak256(ptr, 0x42)\n }\n }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @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 *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n /**\n * @dev Muldiv operation overflow.\n */\n error MathOverflowedMulDiv();\n\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n return a / b;\n }\n\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @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.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0 = x * y; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n if (denominator <= prod1) {\n revert MathOverflowedMulDiv();\n }\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // must be unchecked in order to support `n = type(int256).min`\n return uint256(n >= 0 ? n : -n);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n /// @solidity memory-safe-assembly\n assembly {\n r.slot := store.slot\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n uint8 private constant ADDRESS_LENGTH = 20;\n\n /**\n * @dev The `value` string doesn't fit in the specified `length`.\n */\n error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toStringSigned(int256 value) internal pure returns (string memory) {\n return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n uint256 localValue = value;\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = HEX_DIGITS[localValue & 0xf];\n localValue >>= 4;\n }\n if (localValue != 0) {\n revert StringsInsufficientHexLength(value, length);\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n * representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n"},"contracts/message/B2MessageBridge.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\n\n\ninterface BusinessContract {\n function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success);\n}\n\ncontract B2MessageBridge is Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable {\n\n using ECDSA for bytes32;\n bytes32 public constant SEND_HASH_TYPE = keccak256('Send(uint256 from_chain_id,uint256 from_id,address from_sender,uint256 to_chain_id,address contract_address,bytes data)');\n uint256 public sequence;\n bytes32 public constant ADMIN_ROLE = keccak256(\"admin_role\");\n bytes32 public constant UPGRADE_ROLE = keccak256(\"upgrade_role\");\n bytes32 public constant VALIDATOR_ROLE = keccak256(\"validator_role\");\n uint256 public weight;\n\n function initialize() public initializer {\n __EIP712_init(\"B2MessageBridge\", \"1\");\n __AccessControl_init();\n __UUPSUpgradeable_init();\n _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _grantRole(ADMIN_ROLE, msg.sender);\n _grantRole(UPGRADE_ROLE, msg.sender);\n sequence = 0;\n }\n\n function _authorizeUpgrade(address newImplementation)\n internal\n onlyRole(UPGRADE_ROLE)\n override\n {\n\n }\n\n function setWeight(uint256 _weight) external onlyRole(ADMIN_ROLE) {\n weight = _weight;\n emit SetWeight(weight);\n }\n\n event SetWeight(uint256 weight);\n event Send(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes data);\n event Call(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes data);\n\n function send(uint256 from_chain_id, uint256 from_id, address from_sender, address contract_address, bytes calldata data, bytes[] calldata signatures) external {\n uint256 weight_ = 0;\n for(uint256 i = 0; i < signatures.length; i++) {\n bool success = verify(from_id, from_chain_id, from_sender, block.chainid, contract_address, data, signatures[i]);\n if (success) {\n weight_ = weight_ + 1;\n }\n }\n require(weight_ >= weight, \"verify signatures weight invalid\");\n\n if (contract_address != address(0x0)) {\n bool success = BusinessContract(contract_address).send(from_chain_id, from_id, from_sender, data);\n require(success, \"Call failed\");\n }\n emit Send(from_chain_id, from_id, from_sender, block.chainid, contract_address, data);\n }\n\n function call(uint256 to_chain_id, address contract_address, bytes calldata data) external returns (uint256) {\n sequence = sequence + 1;\n emit Call(block.chainid, sequence, msg.sender, to_chain_id, contract_address, data);\n return sequence;\n }\n\n function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes calldata data, bytes calldata signature) public view returns (bool) {\n bytes32 digest = SendHash(from_chain_id, from_id, from_sender, to_chain_id, contract_address, data);\n return hasRole(VALIDATOR_ROLE, digest.recover(signature));\n }\n\n function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes calldata data) public view returns (bytes32) {\n return _hashTypedDataV4(keccak256(abi.encode(SEND_HASH_TYPE,from_chain_id, from_id, from_sender, to_chain_id, contract_address, data)));\n }\n\n}"}},"settings":{"optimizer":{"enabled":true,"runs":1000},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","exportedSymbols":{"AccessControlUpgradeable":[362],"ContextUpgradeable":[844],"ERC165Upgradeable":[1228],"IAccessControl":[1311],"Initializable":[616]},"id":363,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:0"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":1312,"src":"134:81:0","symbolAliases":[{"foreign":{"id":2,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"142:14:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":845,"src":"216:67:0","symbolAliases":[{"foreign":{"id":4,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":844,"src":"224:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"../utils/introspection/ERC165Upgradeable.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":1229,"src":"284:79:0","symbolAliases":[{"foreign":{"id":6,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"292:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":363,"sourceUnit":617,"src":"364:63:0","symbolAliases":[{"foreign":{"id":8,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"372:13:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":11,"name":"Initializable","nameLocations":["2136:13:0"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"2136:13:0"},"id":12,"nodeType":"InheritanceSpecifier","src":"2136:13:0"},{"baseName":{"id":13,"name":"ContextUpgradeable","nameLocations":["2151:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":844,"src":"2151:18:0"},"id":14,"nodeType":"InheritanceSpecifier","src":"2151:18:0"},{"baseName":{"id":15,"name":"IAccessControl","nameLocations":["2171:14:0"],"nodeType":"IdentifierPath","referencedDeclaration":1311,"src":"2171:14:0"},"id":16,"nodeType":"InheritanceSpecifier","src":"2171:14:0"},{"baseName":{"id":17,"name":"ERC165Upgradeable","nameLocations":["2187:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":1228,"src":"2187:17:0"},"id":18,"nodeType":"InheritanceSpecifier","src":"2187:17:0"}],"canonicalName":"AccessControlUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"429:1660:0","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role."},"fullyImplemented":true,"id":362,"linearizedBaseContracts":[362,1228,2711,1311,844,616],"name":"AccessControlUpgradeable","nameLocation":"2108:24:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControlUpgradeable.RoleData","id":25,"members":[{"constant":false,"id":22,"mutability":"mutable","name":"hasRole","nameLocation":"2270:7:0","nodeType":"VariableDeclaration","scope":25,"src":"2237:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":21,"keyName":"account","keyNameLocation":"2253:7:0","keyType":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"2245:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2237:32:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":20,"name":"bool","nodeType":"ElementaryTypeName","src":"2264:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"adminRole","nameLocation":"2295:9:0","nodeType":"VariableDeclaration","scope":25,"src":"2287:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2218:8:0","nodeType":"StructDefinition","scope":362,"src":"2211:100:0","visibility":"public"},{"constant":true,"functionSelector":"a217fddf","id":28,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2341:18:0","nodeType":"VariableDeclaration","scope":362,"src":"2317:49:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":26,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":27,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2362:4:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"canonicalName":"AccessControlUpgradeable.AccessControlStorage","documentation":{"id":29,"nodeType":"StructuredDocumentation","src":"2374:71:0","text":"@custom:storage-location erc7201:openzeppelin.storage.AccessControl"},"id":35,"members":[{"constant":false,"id":34,"mutability":"mutable","name":"_roles","nameLocation":"2522:6:0","nodeType":"VariableDeclaration","scope":35,"src":"2488:40:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"typeName":{"id":33,"keyName":"role","keyNameLocation":"2504:4:0","keyType":{"id":30,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2496:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2488:33:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":32,"nodeType":"UserDefinedTypeName","pathNode":{"id":31,"name":"RoleData","nameLocations":["2512:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":25,"src":"2512:8:0"},"referencedDeclaration":25,"src":"2512:8:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage_ptr","typeString":"struct AccessControlUpgradeable.RoleData"}}},"visibility":"internal"}],"name":"AccessControlStorage","nameLocation":"2457:20:0","nodeType":"StructDefinition","scope":362,"src":"2450:85:0","visibility":"public"},{"constant":true,"id":38,"mutability":"constant","name":"AccessControlStorageLocation","nameLocation":"2683:28:0","nodeType":"VariableDeclaration","scope":362,"src":"2658:122:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":36,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2658:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030","id":37,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:66:0","typeDescriptions":{"typeIdentifier":"t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1","typeString":"int_const 1295...(68 digits omitted)...1824"},"value":"0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800"},"visibility":"private"},{"body":{"id":45,"nodeType":"Block","src":"2877:87:0","statements":[{"AST":{"nodeType":"YulBlock","src":"2896:62:0","statements":[{"nodeType":"YulAssignment","src":"2910:38:0","value":{"name":"AccessControlStorageLocation","nodeType":"YulIdentifier","src":"2920:28:0"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"2910:6:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":42,"isOffset":false,"isSlot":true,"src":"2910:6:0","suffix":"slot","valueSize":1},{"declaration":38,"isOffset":false,"isSlot":false,"src":"2920:28:0","valueSize":1}],"id":44,"nodeType":"InlineAssembly","src":"2887:71:0"}]},"id":46,"implemented":true,"kind":"function","modifiers":[],"name":"_getAccessControlStorage","nameLocation":"2796:24:0","nodeType":"FunctionDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[],"src":"2820:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42,"mutability":"mutable","name":"$","nameLocation":"2874:1:0","nodeType":"VariableDeclaration","scope":46,"src":"2845:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":41,"nodeType":"UserDefinedTypeName","pathNode":{"id":40,"name":"AccessControlStorage","nameLocations":["2845:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"2845:20:0"},"referencedDeclaration":35,"src":"2845:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"src":"2844:32:0"},"scope":362,"src":"2787:177:0","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":56,"nodeType":"Block","src":"3181:44:0","statements":[{"expression":{"arguments":[{"id":52,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"3202:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":51,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[129,150],"referencedDeclaration":129,"src":"3191:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":53,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3191:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54,"nodeType":"ExpressionStatement","src":"3191:16:0"},{"id":55,"nodeType":"PlaceholderStatement","src":"3217:1:0"}]},"documentation":{"id":47,"nodeType":"StructuredDocumentation","src":"2970:174:0","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":57,"name":"onlyRole","nameLocation":"3158:8:0","nodeType":"ModifierDefinition","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"role","nameLocation":"3175:4:0","nodeType":"VariableDeclaration","scope":57,"src":"3167:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":48,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3167:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3166:14:0"},"src":"3149:76:0","virtual":false,"visibility":"internal"},{"body":{"id":62,"nodeType":"Block","src":"3289:7:0","statements":[]},"id":63,"implemented":true,"kind":"function","modifiers":[{"id":60,"kind":"modifierInvocation","modifierName":{"id":59,"name":"onlyInitializing","nameLocations":["3272:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3272:16:0"},"nodeType":"ModifierInvocation","src":"3272:16:0"}],"name":"__AccessControl_init","nameLocation":"3240:20:0","nodeType":"FunctionDefinition","parameters":{"id":58,"nodeType":"ParameterList","parameters":[],"src":"3260:2:0"},"returnParameters":{"id":61,"nodeType":"ParameterList","parameters":[],"src":"3289:0:0"},"scope":362,"src":"3231:65:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":68,"nodeType":"Block","src":"3370:7:0","statements":[]},"id":69,"implemented":true,"kind":"function","modifiers":[{"id":66,"kind":"modifierInvocation","modifierName":{"id":65,"name":"onlyInitializing","nameLocations":["3353:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3353:16:0"},"nodeType":"ModifierInvocation","src":"3353:16:0"}],"name":"__AccessControl_init_unchained","nameLocation":"3311:30:0","nodeType":"FunctionDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[],"src":"3341:2:0"},"returnParameters":{"id":67,"nodeType":"ParameterList","parameters":[],"src":"3370:0:0"},"scope":362,"src":"3302:75:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1227],"body":{"id":90,"nodeType":"Block","src":"3534:111:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3551:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":80,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"3571:14:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1311_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$1311_$","typeString":"type(contract IAccessControl)"}],"id":79,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3566:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3566:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$1311","typeString":"type(contract IAccessControl)"}},"id":82,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3587:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"3566:32:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3551:47:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":86,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":72,"src":"3626:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":84,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3602:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlUpgradeable_$362_$","typeString":"type(contract super AccessControlUpgradeable)"}},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3608:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1227,"src":"3602:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3602:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3551:87:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":77,"id":89,"nodeType":"Return","src":"3544:94:0"}]},"documentation":{"id":70,"nodeType":"StructuredDocumentation","src":"3382:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":91,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3452:17:0","nodeType":"FunctionDefinition","overrides":{"id":74,"nodeType":"OverrideSpecifier","overrides":[],"src":"3510:8:0"},"parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72,"mutability":"mutable","name":"interfaceId","nameLocation":"3477:11:0","nodeType":"VariableDeclaration","scope":91,"src":"3470:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":71,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3470:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3469:20:0"},"returnParameters":{"id":77,"nodeType":"ParameterList","parameters":[{"constant":false,"id":76,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":91,"src":"3528:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":75,"name":"bool","nodeType":"ElementaryTypeName","src":"3528:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3527:6:0"},"scope":362,"src":"3443:202:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1278],"body":{"id":115,"nodeType":"Block","src":"3815:124:0","statements":[{"assignments":[103],"declarations":[{"constant":false,"id":103,"mutability":"mutable","name":"$","nameLocation":"3854:1:0","nodeType":"VariableDeclaration","scope":115,"src":"3825:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":102,"nodeType":"UserDefinedTypeName","pathNode":{"id":101,"name":"AccessControlStorage","nameLocations":["3825:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"3825:20:0"},"referencedDeclaration":35,"src":"3825:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":106,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":104,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"3858:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3858:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3825:59:0"},{"expression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":107,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103,"src":"3901:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":108,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3903:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"3901:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":110,"indexExpression":{"id":109,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"3910:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3916:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"3901:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":113,"indexExpression":{"id":112,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"3924:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":100,"id":114,"nodeType":"Return","src":"3894:38:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"3651:76:0","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":116,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"3741:7:0","nodeType":"FunctionDefinition","parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"role","nameLocation":"3757:4:0","nodeType":"VariableDeclaration","scope":116,"src":"3749:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":93,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3749:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":96,"mutability":"mutable","name":"account","nameLocation":"3771:7:0","nodeType":"VariableDeclaration","scope":116,"src":"3763:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":95,"name":"address","nodeType":"ElementaryTypeName","src":"3763:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3748:31:0"},"returnParameters":{"id":100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":116,"src":"3809:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":98,"name":"bool","nodeType":"ElementaryTypeName","src":"3809:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3808:6:0"},"scope":362,"src":"3732:207:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":128,"nodeType":"Block","src":"4204:47:0","statements":[{"expression":{"arguments":[{"id":123,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":119,"src":"4225:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":124,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"4231:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4231:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":122,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[129,150],"referencedDeclaration":150,"src":"4214:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":127,"nodeType":"ExpressionStatement","src":"4214:30:0"}]},"documentation":{"id":117,"nodeType":"StructuredDocumentation","src":"3945:198:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":129,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4157:10:0","nodeType":"FunctionDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119,"mutability":"mutable","name":"role","nameLocation":"4176:4:0","nodeType":"VariableDeclaration","scope":129,"src":"4168:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":118,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4168:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4167:14:0"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[],"src":"4204:0:0"},"scope":362,"src":"4148:103:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":149,"nodeType":"Block","src":"4454:124:0","statements":[{"condition":{"id":141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4468:23:0","subExpression":{"arguments":[{"id":138,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"4477:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":139,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4483:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":137,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"4469:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4469:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":148,"nodeType":"IfStatement","src":"4464:108:0","trueBody":{"id":147,"nodeType":"Block","src":"4493:79:0","statements":[{"errorCall":{"arguments":[{"id":143,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"4547:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":144,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":132,"src":"4556:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":142,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"4514:32:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32) pure"}},"id":145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4514:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":146,"nodeType":"RevertStatement","src":"4507:54:0"}]}}]},"documentation":{"id":130,"nodeType":"StructuredDocumentation","src":"4257:119:0","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":150,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4390:10:0","nodeType":"FunctionDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"role","nameLocation":"4409:4:0","nodeType":"VariableDeclaration","scope":150,"src":"4401:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4401:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":134,"mutability":"mutable","name":"account","nameLocation":"4423:7:0","nodeType":"VariableDeclaration","scope":150,"src":"4415:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":133,"name":"address","nodeType":"ElementaryTypeName","src":"4415:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4400:31:0"},"returnParameters":{"id":136,"nodeType":"ParameterList","parameters":[],"src":"4454:0:0"},"scope":362,"src":"4381:197:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1286],"body":{"id":170,"nodeType":"Block","src":"4833:117:0","statements":[{"assignments":[160],"declarations":[{"constant":false,"id":160,"mutability":"mutable","name":"$","nameLocation":"4872:1:0","nodeType":"VariableDeclaration","scope":170,"src":"4843:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":159,"nodeType":"UserDefinedTypeName","pathNode":{"id":158,"name":"AccessControlStorage","nameLocations":["4843:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"4843:20:0"},"referencedDeclaration":35,"src":"4843:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":163,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":161,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"4876:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4876:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4843:59:0"},{"expression":{"expression":{"baseExpression":{"expression":{"id":164,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":160,"src":"4919:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":165,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4921:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"4919:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":167,"indexExpression":{"id":166,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":153,"src":"4928:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4919:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4934:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"4919:24:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":157,"id":169,"nodeType":"Return","src":"4912:31:0"}]},"documentation":{"id":151,"nodeType":"StructuredDocumentation","src":"4584:170:0","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":171,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"4768:12:0","nodeType":"FunctionDefinition","parameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"role","nameLocation":"4789:4:0","nodeType":"VariableDeclaration","scope":171,"src":"4781:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":152,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4781:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4780:14:0"},"returnParameters":{"id":157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":171,"src":"4824:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4824:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4823:9:0"},"scope":362,"src":"4759:191:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1294],"body":{"id":189,"nodeType":"Block","src":"5340:42:0","statements":[{"expression":{"arguments":[{"id":185,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"5361:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":186,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"5367:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":184,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"5350:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5350:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":188,"nodeType":"ExpressionStatement","src":"5350:25:0"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"4956:285:0","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":190,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":180,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"5333:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":179,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5320:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":182,"kind":"modifierInvocation","modifierName":{"id":178,"name":"onlyRole","nameLocations":["5311:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"5311:8:0"},"nodeType":"ModifierInvocation","src":"5311:28:0"}],"name":"grantRole","nameLocation":"5255:9:0","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"role","nameLocation":"5273:4:0","nodeType":"VariableDeclaration","scope":190,"src":"5265:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5265:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"account","nameLocation":"5287:7:0","nodeType":"VariableDeclaration","scope":190,"src":"5279:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":175,"name":"address","nodeType":"ElementaryTypeName","src":"5279:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5264:31:0"},"returnParameters":{"id":183,"nodeType":"ParameterList","parameters":[],"src":"5340:0:0"},"scope":362,"src":"5246:136:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1302],"body":{"id":208,"nodeType":"Block","src":"5757:43:0","statements":[{"expression":{"arguments":[{"id":204,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5779:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":205,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"5785:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":203,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"5767:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5767:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":207,"nodeType":"ExpressionStatement","src":"5767:26:0"}]},"documentation":{"id":191,"nodeType":"StructuredDocumentation","src":"5388:269:0","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":209,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":199,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"5750:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":198,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"5737:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5737:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":201,"kind":"modifierInvocation","modifierName":{"id":197,"name":"onlyRole","nameLocations":["5728:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"5728:8:0"},"nodeType":"ModifierInvocation","src":"5728:28:0"}],"name":"revokeRole","nameLocation":"5671:10:0","nodeType":"FunctionDefinition","parameters":{"id":196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"role","nameLocation":"5690:4:0","nodeType":"VariableDeclaration","scope":209,"src":"5682:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5682:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"account","nameLocation":"5704:7:0","nodeType":"VariableDeclaration","scope":209,"src":"5696:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"5696:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5681:31:0"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[],"src":"5757:0:0"},"scope":362,"src":"5662:138:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1310],"body":{"id":231,"nodeType":"Block","src":"6427:166:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":217,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"6441:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":218,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"6463:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6463:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6441:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":225,"nodeType":"IfStatement","src":"6437:102:0","trueBody":{"id":224,"nodeType":"Block","src":"6477:62:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":221,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"6498:28:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":223,"nodeType":"RevertStatement","src":"6491:37:0"}]}},{"expression":{"arguments":[{"id":227,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":212,"src":"6561:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":228,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":214,"src":"6567:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":226,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"6549:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6549:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":230,"nodeType":"ExpressionStatement","src":"6549:37:0"}]},"documentation":{"id":210,"nodeType":"StructuredDocumentation","src":"5806:537:0","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":232,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"6357:12:0","nodeType":"FunctionDefinition","parameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"role","nameLocation":"6378:4:0","nodeType":"VariableDeclaration","scope":232,"src":"6370:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":211,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6370:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":214,"mutability":"mutable","name":"callerConfirmation","nameLocation":"6392:18:0","nodeType":"VariableDeclaration","scope":232,"src":"6384:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":213,"name":"address","nodeType":"ElementaryTypeName","src":"6384:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6369:42:0"},"returnParameters":{"id":216,"nodeType":"ParameterList","parameters":[],"src":"6427:0:0"},"scope":362,"src":"6348:245:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":267,"nodeType":"Block","src":"6791:245:0","statements":[{"assignments":[242],"declarations":[{"constant":false,"id":242,"mutability":"mutable","name":"$","nameLocation":"6830:1:0","nodeType":"VariableDeclaration","scope":267,"src":"6801:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":241,"nodeType":"UserDefinedTypeName","pathNode":{"id":240,"name":"AccessControlStorage","nameLocations":["6801:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"6801:20:0"},"referencedDeclaration":35,"src":"6801:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":245,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":243,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"6834:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6834:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6801:59:0"},{"assignments":[247],"declarations":[{"constant":false,"id":247,"mutability":"mutable","name":"previousAdminRole","nameLocation":"6878:17:0","nodeType":"VariableDeclaration","scope":267,"src":"6870:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6870:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":251,"initialValue":{"arguments":[{"id":249,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6911:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":248,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":171,"src":"6898:12:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6898:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6870:46:0"},{"expression":{"id":259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":252,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":242,"src":"6926:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":255,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6928:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"6926:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":256,"indexExpression":{"id":254,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6935:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6926:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6941:9:0","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":24,"src":"6926:24:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":258,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"6953:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6926:36:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":260,"nodeType":"ExpressionStatement","src":"6926:36:0"},{"eventCall":{"arguments":[{"id":262,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":235,"src":"6994:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":263,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"7000:17:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":264,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"7019:9:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":261,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"6977:16:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6977:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":266,"nodeType":"EmitStatement","src":"6972:57:0"}]},"documentation":{"id":233,"nodeType":"StructuredDocumentation","src":"6599:114:0","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":268,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"6727:13:0","nodeType":"FunctionDefinition","parameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":235,"mutability":"mutable","name":"role","nameLocation":"6749:4:0","nodeType":"VariableDeclaration","scope":268,"src":"6741:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":234,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6741:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":237,"mutability":"mutable","name":"adminRole","nameLocation":"6763:9:0","nodeType":"VariableDeclaration","scope":268,"src":"6755:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6755:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6740:33:0"},"returnParameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"6791:0:0"},"scope":362,"src":"6718:318:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":314,"nodeType":"Block","src":"7353:304:0","statements":[{"assignments":[280],"declarations":[{"constant":false,"id":280,"mutability":"mutable","name":"$","nameLocation":"7392:1:0","nodeType":"VariableDeclaration","scope":314,"src":"7363:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":279,"nodeType":"UserDefinedTypeName","pathNode":{"id":278,"name":"AccessControlStorage","nameLocations":["7363:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"7363:20:0"},"referencedDeclaration":35,"src":"7363:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":283,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":281,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"7396:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7396:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7363:59:0"},{"condition":{"id":288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7436:23:0","subExpression":{"arguments":[{"id":285,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7445:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":286,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7451:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":284,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"7437:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7437:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":312,"nodeType":"Block","src":"7614:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7635:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":277,"id":311,"nodeType":"Return","src":"7628:12:0"}]},"id":313,"nodeType":"IfStatement","src":"7432:219:0","trueBody":{"id":309,"nodeType":"Block","src":"7461:147:0","statements":[{"expression":{"id":298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":289,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"7475:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7477:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"7475:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":293,"indexExpression":{"id":291,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7484:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7475:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":294,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7490:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"7475:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":296,"indexExpression":{"id":295,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7498:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7475:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7509:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7475:38:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":299,"nodeType":"ExpressionStatement","src":"7475:38:0"},{"eventCall":{"arguments":[{"id":301,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":271,"src":"7544:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":302,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"7550:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":303,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"7559:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7559:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":300,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1259,"src":"7532:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7532:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":306,"nodeType":"EmitStatement","src":"7527:45:0"},{"expression":{"hexValue":"74727565","id":307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7593:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":277,"id":308,"nodeType":"Return","src":"7586:11:0"}]}}]},"documentation":{"id":269,"nodeType":"StructuredDocumentation","src":"7042:223:0","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":315,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"7279:10:0","nodeType":"FunctionDefinition","parameters":{"id":274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"role","nameLocation":"7298:4:0","nodeType":"VariableDeclaration","scope":315,"src":"7290:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7290:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":273,"mutability":"mutable","name":"account","nameLocation":"7312:7:0","nodeType":"VariableDeclaration","scope":315,"src":"7304:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":272,"name":"address","nodeType":"ElementaryTypeName","src":"7304:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7289:31:0"},"returnParameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":315,"src":"7347:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":275,"name":"bool","nodeType":"ElementaryTypeName","src":"7347:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7346:6:0"},"scope":362,"src":"7270:387:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":360,"nodeType":"Block","src":"7976:304:0","statements":[{"assignments":[327],"declarations":[{"constant":false,"id":327,"mutability":"mutable","name":"$","nameLocation":"8015:1:0","nodeType":"VariableDeclaration","scope":360,"src":"7986:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":326,"nodeType":"UserDefinedTypeName","pathNode":{"id":325,"name":"AccessControlStorage","nameLocations":["7986:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":35,"src":"7986:20:0"},"referencedDeclaration":35,"src":"7986:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":330,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":328,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"8019:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8019:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7986:59:0"},{"condition":{"arguments":[{"id":332,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8067:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":333,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8073:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":331,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"8059:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8059:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":358,"nodeType":"Block","src":"8237:37:0","statements":[{"expression":{"hexValue":"66616c7365","id":356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8258:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":324,"id":357,"nodeType":"Return","src":"8251:12:0"}]},"id":359,"nodeType":"IfStatement","src":"8055:219:0","trueBody":{"id":355,"nodeType":"Block","src":"8083:148:0","statements":[{"expression":{"id":344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":335,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"8097:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$35_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8099:6:0","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":34,"src":"8097:8:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":339,"indexExpression":{"id":337,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8106:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8097:14:0","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$25_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8112:7:0","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":22,"src":"8097:22:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":342,"indexExpression":{"id":341,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8120:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8097:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8131:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"8097:39:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":345,"nodeType":"ExpressionStatement","src":"8097:39:0"},{"eventCall":{"arguments":[{"id":347,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8167:4:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":348,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8173:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":349,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":826,"src":"8182:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8182:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":346,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1268,"src":"8155:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8155:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":352,"nodeType":"EmitStatement","src":"8150:45:0"},{"expression":{"hexValue":"74727565","id":353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8216:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":324,"id":354,"nodeType":"Return","src":"8209:11:0"}]}}]},"documentation":{"id":316,"nodeType":"StructuredDocumentation","src":"7663:224:0","text":" @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":361,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"7901:11:0","nodeType":"FunctionDefinition","parameters":{"id":321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"role","nameLocation":"7921:4:0","nodeType":"VariableDeclaration","scope":361,"src":"7913:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7913:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":320,"mutability":"mutable","name":"account","nameLocation":"7935:7:0","nodeType":"VariableDeclaration","scope":361,"src":"7927:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":319,"name":"address","nodeType":"ElementaryTypeName","src":"7927:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7912:31:0"},"returnParameters":{"id":324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":361,"src":"7970:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":322,"name":"bool","nodeType":"ElementaryTypeName","src":"7970:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7969:6:0"},"scope":362,"src":"7892:388:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":363,"src":"2090:6192:0","usedErrors":[379,382,1238,1241],"usedEvents":[387,1250,1259,1268]}],"src":"108:8175:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[616]},"id":617,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":364,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:1"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":365,"nodeType":"StructuredDocumentation","src":"139:2209:1","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":616,"linearizedBaseContracts":[616],"name":"Initializable","nameLocation":"2367:13:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":366,"nodeType":"StructuredDocumentation","src":"2387:293:1","text":" @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable"},"id":373,"members":[{"constant":false,"id":369,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:1","nodeType":"VariableDeclaration","scope":373,"src":"2813:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":368,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:1","nodeType":"VariableDeclaration","scope":373,"src":"2950:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":371,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:1","nodeType":"StructDefinition","scope":616,"src":"2685:290:1","visibility":"public"},{"constant":true,"id":376,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:1","nodeType":"VariableDeclaration","scope":616,"src":"3098:115:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:1","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":377,"nodeType":"StructuredDocumentation","src":"3220:60:1","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":379,"name":"InvalidInitialization","nameLocation":"3291:21:1","nodeType":"ErrorDefinition","parameters":{"id":378,"nodeType":"ParameterList","parameters":[],"src":"3312:2:1"},"src":"3285:30:1"},{"documentation":{"id":380,"nodeType":"StructuredDocumentation","src":"3321:57:1","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":382,"name":"NotInitializing","nameLocation":"3389:15:1","nodeType":"ErrorDefinition","parameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"3404:2:1"},"src":"3383:24:1"},{"anonymous":false,"documentation":{"id":383,"nodeType":"StructuredDocumentation","src":"3413:90:1","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":387,"name":"Initialized","nameLocation":"3514:11:1","nodeType":"EventDefinition","parameters":{"id":386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":385,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:1","nodeType":"VariableDeclaration","scope":387,"src":"3526:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":384,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:1"},"src":"3508:34:1"},{"body":{"id":469,"nodeType":"Block","src":"4092:1081:1","statements":[{"assignments":[392],"declarations":[{"constant":false,"id":392,"mutability":"mutable","name":"$","nameLocation":"4187:1:1","nodeType":"VariableDeclaration","scope":469,"src":"4158:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":391,"nodeType":"UserDefinedTypeName","pathNode":{"id":390,"name":"InitializableStorage","nameLocations":["4158:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"4158:20:1"},"referencedDeclaration":373,"src":"4158:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":395,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":393,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"4191:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:1"},{"assignments":[397],"declarations":[{"constant":false,"id":397,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:1","nodeType":"VariableDeclaration","scope":469,"src":"4279:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":396,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":401,"initialValue":{"id":400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:1","subExpression":{"expression":{"id":398,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4302:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"4302:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:1"},{"assignments":[403],"declarations":[{"constant":false,"id":403,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:1","nodeType":"VariableDeclaration","scope":469,"src":"4327:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":402,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":406,"initialValue":{"expression":{"id":404,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4348:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"4348:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:1"},{"assignments":[408],"declarations":[{"constant":false,"id":408,"mutability":"mutable","name":"initialSetup","nameLocation":"4711:12:1","nodeType":"VariableDeclaration","scope":469,"src":"4706:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":407,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":414,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":409,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4726:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4741:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4726:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":412,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4746:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4726:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4706:54:1"},{"assignments":[416],"declarations":[{"constant":false,"id":416,"mutability":"mutable","name":"construction","nameLocation":"4775:12:1","nodeType":"VariableDeclaration","scope":469,"src":"4770:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":415,"name":"bool","nodeType":"ElementaryTypeName","src":"4770:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":429,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":417,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4790:11:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4805:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4790:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":422,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4818:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$616","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$616","typeString":"contract Initializable"}],"id":421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4810:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":420,"name":"address","nodeType":"ElementaryTypeName","src":"4810:7:1","typeDescriptions":{}}},"id":423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4810:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4824:4:1","memberName":"code","nodeType":"MemberAccess","src":"4810:18:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4829:6:1","memberName":"length","nodeType":"MemberAccess","src":"4810:25:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4810:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4790:50:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4770:70:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4855:13:1","subExpression":{"id":430,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"4856:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4872:13:1","subExpression":{"id":432,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":416,"src":"4873:12:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4855:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":439,"nodeType":"IfStatement","src":"4851:91:1","trueBody":{"id":438,"nodeType":"Block","src":"4887:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":435,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"4908:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4908:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":437,"nodeType":"RevertStatement","src":"4901:30:1"}]}},{"expression":{"id":444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":440,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"4951:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":442,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4953:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"4951:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4968:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4951:18:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":445,"nodeType":"ExpressionStatement","src":"4951:18:1"},{"condition":{"id":446,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"4983:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":454,"nodeType":"IfStatement","src":"4979:67:1","trueBody":{"id":453,"nodeType":"Block","src":"4999:47:1","statements":[{"expression":{"id":451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":447,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"5013:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5015:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"5013:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5031:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5013:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":452,"nodeType":"ExpressionStatement","src":"5013:22:1"}]}},{"id":455,"nodeType":"PlaceholderStatement","src":"5055:1:1"},{"condition":{"id":456,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"5070:14:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":468,"nodeType":"IfStatement","src":"5066:101:1","trueBody":{"id":467,"nodeType":"Block","src":"5086:81:1","statements":[{"expression":{"id":461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":457,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"5100:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":459,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5102:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"5100:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5118:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5100:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":462,"nodeType":"ExpressionStatement","src":"5100:23:1"},{"eventCall":{"arguments":[{"hexValue":"31","id":464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5154:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":463,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"5142:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:14:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":466,"nodeType":"EmitStatement","src":"5137:19:1"}]}}]},"documentation":{"id":388,"nodeType":"StructuredDocumentation","src":"3548:516:1","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event."},"id":470,"name":"initializer","nameLocation":"4078:11:1","nodeType":"ModifierDefinition","parameters":{"id":389,"nodeType":"ParameterList","parameters":[],"src":"4089:2:1"},"src":"4069:1104:1","virtual":false,"visibility":"internal"},{"body":{"id":516,"nodeType":"Block","src":"6291:392:1","statements":[{"assignments":[477],"declarations":[{"constant":false,"id":477,"mutability":"mutable","name":"$","nameLocation":"6386:1:1","nodeType":"VariableDeclaration","scope":516,"src":"6357:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":476,"nodeType":"UserDefinedTypeName","pathNode":{"id":475,"name":"InitializableStorage","nameLocations":["6357:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"6357:20:1"},"referencedDeclaration":373,"src":"6357:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":480,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":478,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"6390:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6357:59:1"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":481,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6431:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6433:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6431:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":483,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6450:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6452:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"6450:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":485,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6468:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6450:25:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6431:44:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":492,"nodeType":"IfStatement","src":"6427:105:1","trueBody":{"id":491,"nodeType":"Block","src":"6477:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":488,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"6498:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":490,"nodeType":"RevertStatement","src":"6491:30:1"}]}},{"expression":{"id":497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":493,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6541:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6543:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"6541:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":496,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6558:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6541:24:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":498,"nodeType":"ExpressionStatement","src":"6541:24:1"},{"expression":{"id":503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":499,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6575:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6577:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6575:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6593:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6575:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":504,"nodeType":"ExpressionStatement","src":"6575:22:1"},{"id":505,"nodeType":"PlaceholderStatement","src":"6607:1:1"},{"expression":{"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":506,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"6618:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":508,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6620:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"6618:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6636:5:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6618:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":511,"nodeType":"ExpressionStatement","src":"6618:23:1"},{"eventCall":{"arguments":[{"id":513,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"6668:7:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":512,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"6656:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6656:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":515,"nodeType":"EmitStatement","src":"6651:25:1"}]},"documentation":{"id":471,"nodeType":"StructuredDocumentation","src":"5179:1068:1","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":517,"name":"reinitializer","nameLocation":"6261:13:1","nodeType":"ModifierDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"version","nameLocation":"6282:7:1","nodeType":"VariableDeclaration","scope":517,"src":"6275:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":472,"name":"uint64","nodeType":"ElementaryTypeName","src":"6275:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6274:16:1"},"src":"6252:431:1","virtual":false,"visibility":"internal"},{"body":{"id":524,"nodeType":"Block","src":"6921:48:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":520,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"6931:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6931:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":522,"nodeType":"ExpressionStatement","src":"6931:20:1"},{"id":523,"nodeType":"PlaceholderStatement","src":"6961:1:1"}]},"documentation":{"id":518,"nodeType":"StructuredDocumentation","src":"6689:199:1","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":525,"name":"onlyInitializing","nameLocation":"6902:16:1","nodeType":"ModifierDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"6918:2:1"},"src":"6893:76:1","virtual":false,"visibility":"internal"},{"body":{"id":537,"nodeType":"Block","src":"7136:89:1","statements":[{"condition":{"id":531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7150:18:1","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":529,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"7151:15:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7151:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":536,"nodeType":"IfStatement","src":"7146:73:1","trueBody":{"id":535,"nodeType":"Block","src":"7170:49:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":532,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"7191:15:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7191:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":534,"nodeType":"RevertStatement","src":"7184:24:1"}]}}]},"documentation":{"id":526,"nodeType":"StructuredDocumentation","src":"6975:104:1","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":538,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7093:18:1","nodeType":"FunctionDefinition","parameters":{"id":527,"nodeType":"ParameterList","parameters":[],"src":"7111:2:1"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[],"src":"7136:0:1"},"scope":616,"src":"7084:141:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":583,"nodeType":"Block","src":"7760:373:1","statements":[{"assignments":[544],"declarations":[{"constant":false,"id":544,"mutability":"mutable","name":"$","nameLocation":"7855:1:1","nodeType":"VariableDeclaration","scope":583,"src":"7826:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":543,"nodeType":"UserDefinedTypeName","pathNode":{"id":542,"name":"InitializableStorage","nameLocations":["7826:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"7826:20:1"},"referencedDeclaration":373,"src":"7826:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":547,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":545,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"7859:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7859:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7826:59:1"},{"condition":{"expression":{"id":548,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"7900:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7902:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"7900:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":554,"nodeType":"IfStatement","src":"7896:76:1","trueBody":{"id":553,"nodeType":"Block","src":"7917:55:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":550,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":379,"src":"7938:21:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7938:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":552,"nodeType":"RevertStatement","src":"7931:30:1"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":555,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"7985:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":556,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7987:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"7985:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8008:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":558,"name":"uint64","nodeType":"ElementaryTypeName","src":"8008:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":557,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8003:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8003:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8016:3:1","memberName":"max","nodeType":"MemberAccess","src":"8003:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7985:34:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":582,"nodeType":"IfStatement","src":"7981:146:1","trueBody":{"id":581,"nodeType":"Block","src":"8021:106:1","statements":[{"expression":{"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":563,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"8035:1:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8037:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"8035:14:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8057:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":567,"name":"uint64","nodeType":"ElementaryTypeName","src":"8057:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":566,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8052:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8065:3:1","memberName":"max","nodeType":"MemberAccess","src":"8052:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8035:33:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":572,"nodeType":"ExpressionStatement","src":"8035:33:1"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8104:6:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":575,"name":"uint64","nodeType":"ElementaryTypeName","src":"8104:6:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":574,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8099:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8099:12:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8112:3:1","memberName":"max","nodeType":"MemberAccess","src":"8099:16:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":573,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":387,"src":"8087:11:1","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8087:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":580,"nodeType":"EmitStatement","src":"8082:34:1"}]}}]},"documentation":{"id":539,"nodeType":"StructuredDocumentation","src":"7231:475:1","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":584,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7720:20:1","nodeType":"FunctionDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[],"src":"7740:2:1"},"returnParameters":{"id":541,"nodeType":"ParameterList","parameters":[],"src":"7760:0:1"},"scope":616,"src":"7711:422:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":594,"nodeType":"Block","src":"8308:63:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":590,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"8325:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8352:12:1","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":369,"src":"8325:39:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":589,"id":593,"nodeType":"Return","src":"8318:46:1"}]},"documentation":{"id":585,"nodeType":"StructuredDocumentation","src":"8139:99:1","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":595,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8252:22:1","nodeType":"FunctionDefinition","parameters":{"id":586,"nodeType":"ParameterList","parameters":[],"src":"8274:2:1"},"returnParameters":{"id":589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":595,"src":"8300:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":587,"name":"uint64","nodeType":"ElementaryTypeName","src":"8300:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8299:8:1"},"scope":616,"src":"8243:128:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":605,"nodeType":"Block","src":"8543:64:1","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":601,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"8560:24:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$373_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8587:13:1","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":372,"src":"8560:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":600,"id":604,"nodeType":"Return","src":"8553:47:1"}]},"documentation":{"id":596,"nodeType":"StructuredDocumentation","src":"8377:105:1","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":606,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8496:15:1","nodeType":"FunctionDefinition","parameters":{"id":597,"nodeType":"ParameterList","parameters":[],"src":"8511:2:1"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":606,"src":"8537:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":598,"name":"bool","nodeType":"ElementaryTypeName","src":"8537:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8536:6:1"},"scope":616,"src":"8487:120:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":614,"nodeType":"Block","src":"8827:80:1","statements":[{"AST":{"nodeType":"YulBlock","src":"8846:55:1","statements":[{"nodeType":"YulAssignment","src":"8860:31:1","value":{"name":"INITIALIZABLE_STORAGE","nodeType":"YulIdentifier","src":"8870:21:1"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"8860:6:1"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":611,"isOffset":false,"isSlot":true,"src":"8860:6:1","suffix":"slot","valueSize":1},{"declaration":376,"isOffset":false,"isSlot":false,"src":"8870:21:1","valueSize":1}],"id":613,"nodeType":"InlineAssembly","src":"8837:64:1"}]},"documentation":{"id":607,"nodeType":"StructuredDocumentation","src":"8613:67:1","text":" @dev Returns a pointer to the storage namespace."},"id":615,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"8746:24:1","nodeType":"FunctionDefinition","parameters":{"id":608,"nodeType":"ParameterList","parameters":[],"src":"8770:2:1"},"returnParameters":{"id":612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"$","nameLocation":"8824:1:1","nodeType":"VariableDeclaration","scope":615,"src":"8795:30:1","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":610,"nodeType":"UserDefinedTypeName","pathNode":{"id":609,"name":"InitializableStorage","nameLocations":["8795:20:1"],"nodeType":"IdentifierPath","referencedDeclaration":373,"src":"8795:20:1"},"referencedDeclaration":373,"src":"8795:20:1","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$373_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"8794:32:1"},"scope":616,"src":"8737:170:1","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":617,"src":"2349:6560:1","usedErrors":[379,382],"usedEvents":[387]}],"src":"113:8797:1"},"id":1},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[1649],"IERC1822Proxiable":[1346],"Initializable":[616],"UUPSUpgradeable":[798]},"id":799,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":618,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:2"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":620,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":1347,"src":"141:88:2","symbolAliases":[{"foreign":{"id":619,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"149:17:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":622,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":1650,"src":"230:84:2","symbolAliases":[{"foreign":{"id":621,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"238:12:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":624,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":799,"sourceUnit":617,"src":"315:50:2","symbolAliases":[{"foreign":{"id":623,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"323:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":626,"name":"Initializable","nameLocations":["1023:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"1023:13:2"},"id":627,"nodeType":"InheritanceSpecifier","src":"1023:13:2"},{"baseName":{"id":628,"name":"IERC1822Proxiable","nameLocations":["1038:17:2"],"nodeType":"IdentifierPath","referencedDeclaration":1346,"src":"1038:17:2"},"id":629,"nodeType":"InheritanceSpecifier","src":"1038:17:2"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":625,"nodeType":"StructuredDocumentation","src":"367:618:2","text":" @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism."},"fullyImplemented":false,"id":798,"linearizedBaseContracts":[798,1346,616],"name":"UUPSUpgradeable","nameLocation":"1004:15:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":630,"nodeType":"StructuredDocumentation","src":"1062:61:2","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":636,"mutability":"immutable","name":"__self","nameLocation":"1154:6:2","nodeType":"VariableDeclaration","scope":798,"src":"1128:48:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":634,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":632,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:2","typeDescriptions":{}}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":637,"nodeType":"StructuredDocumentation","src":"1183:631:2","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade."},"functionSelector":"ad3cb1cc","id":640,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:2","nodeType":"VariableDeclaration","scope":798,"src":"1819:58:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":638,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":641,"nodeType":"StructuredDocumentation","src":"1884:65:2","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":643,"name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:2","nodeType":"ErrorDefinition","parameters":{"id":642,"nodeType":"ParameterList","parameters":[],"src":"1987:2:2"},"src":"1954:36:2"},{"documentation":{"id":644,"nodeType":"StructuredDocumentation","src":"1996:68:2","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":648,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:2","nodeType":"ErrorDefinition","parameters":{"id":647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":646,"mutability":"mutable","name":"slot","nameLocation":"2112:4:2","nodeType":"VariableDeclaration","scope":648,"src":"2104:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:2"},"src":"2069:49:2"},{"body":{"id":655,"nodeType":"Block","src":"2643:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":651,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":730,"src":"2653:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2653:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":653,"nodeType":"ExpressionStatement","src":"2653:13:2"},{"id":654,"nodeType":"PlaceholderStatement","src":"2676:1:2"}]},"documentation":{"id":649,"nodeType":"StructuredDocumentation","src":"2124:493:2","text":" @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":656,"name":"onlyProxy","nameLocation":"2631:9:2","nodeType":"ModifierDefinition","parameters":{"id":650,"nodeType":"ParameterList","parameters":[],"src":"2640:2:2"},"src":"2622:62:2","virtual":false,"visibility":"internal"},{"body":{"id":663,"nodeType":"Block","src":"2914:48:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":659,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":746,"src":"2924:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2924:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":661,"nodeType":"ExpressionStatement","src":"2924:20:2"},{"id":662,"nodeType":"PlaceholderStatement","src":"2954:1:2"}]},"documentation":{"id":657,"nodeType":"StructuredDocumentation","src":"2690:195:2","text":" @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies."},"id":664,"name":"notDelegated","nameLocation":"2899:12:2","nodeType":"ModifierDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[],"src":"2911:2:2"},"src":"2890:72:2","virtual":false,"visibility":"internal"},{"body":{"id":669,"nodeType":"Block","src":"3028:7:2","statements":[]},"id":670,"implemented":true,"kind":"function","modifiers":[{"id":667,"kind":"modifierInvocation","modifierName":{"id":666,"name":"onlyInitializing","nameLocations":["3011:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3011:16:2"},"nodeType":"ModifierInvocation","src":"3011:16:2"}],"name":"__UUPSUpgradeable_init","nameLocation":"2977:22:2","nodeType":"FunctionDefinition","parameters":{"id":665,"nodeType":"ParameterList","parameters":[],"src":"2999:2:2"},"returnParameters":{"id":668,"nodeType":"ParameterList","parameters":[],"src":"3028:0:2"},"scope":798,"src":"2968:67:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":675,"nodeType":"Block","src":"3111:7:2","statements":[]},"id":676,"implemented":true,"kind":"function","modifiers":[{"id":673,"kind":"modifierInvocation","modifierName":{"id":672,"name":"onlyInitializing","nameLocations":["3094:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3094:16:2"},"nodeType":"ModifierInvocation","src":"3094:16:2"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3050:32:2","nodeType":"FunctionDefinition","parameters":{"id":671,"nodeType":"ParameterList","parameters":[],"src":"3082:2:2"},"returnParameters":{"id":674,"nodeType":"ParameterList","parameters":[],"src":"3111:0:2"},"scope":798,"src":"3041:77:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1345],"body":{"id":687,"nodeType":"Block","src":"3783:56:2","statements":[{"expression":{"expression":{"id":684,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"3800:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3813:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1376,"src":"3800:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":683,"id":686,"nodeType":"Return","src":"3793:39:2"}]},"documentation":{"id":677,"nodeType":"StructuredDocumentation","src":"3123:577:2","text":" @dev Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"functionSelector":"52d1902d","id":688,"implemented":true,"kind":"function","modifiers":[{"id":680,"kind":"modifierInvocation","modifierName":{"id":679,"name":"notDelegated","nameLocations":["3752:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":664,"src":"3752:12:2"},"nodeType":"ModifierInvocation","src":"3752:12:2"}],"name":"proxiableUUID","nameLocation":"3714:13:2","nodeType":"FunctionDefinition","parameters":{"id":678,"nodeType":"ParameterList","parameters":[],"src":"3727:2:2"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":688,"src":"3774:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3774:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3773:9:2"},"scope":798,"src":"3705:134:2","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":707,"nodeType":"Block","src":"4263:109:2","statements":[{"expression":{"arguments":[{"id":699,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4291:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":698,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"4273:17:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4273:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":701,"nodeType":"ExpressionStatement","src":"4273:36:2"},{"expression":{"arguments":[{"id":703,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4341:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":704,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4360:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":702,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"4319:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4319:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":706,"nodeType":"ExpressionStatement","src":"4319:46:2"}]},"documentation":{"id":689,"nodeType":"StructuredDocumentation","src":"3845:308:2","text":" @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"4f1ef286","id":708,"implemented":true,"kind":"function","modifiers":[{"id":696,"kind":"modifierInvocation","modifierName":{"id":695,"name":"onlyProxy","nameLocations":["4253:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":656,"src":"4253:9:2"},"nodeType":"ModifierInvocation","src":"4253:9:2"}],"name":"upgradeToAndCall","nameLocation":"4167:16:2","nodeType":"FunctionDefinition","parameters":{"id":694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"mutability":"mutable","name":"newImplementation","nameLocation":"4192:17:2","nodeType":"VariableDeclaration","scope":708,"src":"4184:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":690,"name":"address","nodeType":"ElementaryTypeName","src":"4184:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":693,"mutability":"mutable","name":"data","nameLocation":"4224:4:2","nodeType":"VariableDeclaration","scope":708,"src":"4211:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":692,"name":"bytes","nodeType":"ElementaryTypeName","src":"4211:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4183:46:2"},"returnParameters":{"id":697,"nodeType":"ParameterList","parameters":[],"src":"4263:0:2"},"scope":798,"src":"4158:214:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":729,"nodeType":"Block","src":"4644:267:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":714,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4679:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4671:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":712,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:2","typeDescriptions":{}}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4671:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":716,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"4688:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4671:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":718,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"4749:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4762:17:2","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":1407,"src":"4749:30:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":721,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"4785:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4749:42:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4671:120:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":728,"nodeType":"IfStatement","src":"4654:251:2","trueBody":{"id":727,"nodeType":"Block","src":"4844:61:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":724,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"4865:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":726,"nodeType":"RevertStatement","src":"4858:36:2"}]}}]},"documentation":{"id":709,"nodeType":"StructuredDocumentation","src":"4378:216:2","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC1967-compliant implementation pointing to self.\n See {_onlyProxy}."},"id":730,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4608:11:2","nodeType":"FunctionDefinition","parameters":{"id":710,"nodeType":"ParameterList","parameters":[],"src":"4619:2:2"},"returnParameters":{"id":711,"nodeType":"ParameterList","parameters":[],"src":"4644:0:2"},"scope":798,"src":"4599:312:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":745,"nodeType":"Block","src":"5080:161:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":736,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5102:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$798","typeString":"contract UUPSUpgradeable"}],"id":735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5094:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":734,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:2","typeDescriptions":{}}},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":738,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"5111:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5094:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":744,"nodeType":"IfStatement","src":"5090:145:2","trueBody":{"id":743,"nodeType":"Block","src":"5119:116:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":740,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"5195:27:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5195:29:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":742,"nodeType":"RevertStatement","src":"5188:36:2"}]}}]},"documentation":{"id":731,"nodeType":"StructuredDocumentation","src":"4917:106:2","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":746,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5037:18:2","nodeType":"FunctionDefinition","parameters":{"id":732,"nodeType":"ParameterList","parameters":[],"src":"5055:2:2"},"returnParameters":{"id":733,"nodeType":"ParameterList","parameters":[],"src":"5080:0:2"},"scope":798,"src":"5028:213:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":747,"nodeType":"StructuredDocumentation","src":"5247:372:2","text":" @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```"},"id":752,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5633:17:2","nodeType":"FunctionDefinition","parameters":{"id":750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"newImplementation","nameLocation":"5659:17:2","nodeType":"VariableDeclaration","scope":752,"src":"5651:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":748,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:27:2"},"returnParameters":{"id":751,"nodeType":"ParameterList","parameters":[],"src":"5694:0:2"},"scope":798,"src":"5624:71:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":796,"nodeType":"Block","src":"6137:453:2","statements":[{"clauses":[{"block":{"id":785,"nodeType":"Block","src":"6227:212:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":768,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"6245:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":769,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"6253:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6266:19:2","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":1376,"src":"6253:32:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6245:40:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":777,"nodeType":"IfStatement","src":"6241:120:2","trueBody":{"id":776,"nodeType":"Block","src":"6287:74:2","statements":[{"errorCall":{"arguments":[{"id":773,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":766,"src":"6341:4:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":772,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"6312:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":775,"nodeType":"RevertStatement","src":"6305:41:2"}]}},{"expression":{"arguments":[{"id":781,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6404:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":782,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"6423:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":778,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"6374:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6387:16:2","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"6374:29:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":784,"nodeType":"ExpressionStatement","src":"6374:54:2"}]},"errorName":"","id":786,"nodeType":"TryCatchClause","parameters":{"id":767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"slot","nameLocation":"6221:4:2","nodeType":"VariableDeclaration","scope":786,"src":"6213:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6213:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6212:14:2"},"src":"6204:235:2"},{"block":{"id":793,"nodeType":"Block","src":"6446:138:2","statements":[{"errorCall":{"arguments":[{"id":790,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6555:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":787,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"6513:12:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1649_$","typeString":"type(library ERC1967Utils)"}},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6526:28:2","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":1381,"src":"6513:41:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6513:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":792,"nodeType":"RevertStatement","src":"6506:67:2"}]},"errorName":"","id":794,"nodeType":"TryCatchClause","src":"6440:144:2"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":761,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"6169:17:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":760,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"6151:17:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$1346_$","typeString":"type(contract IERC1822Proxiable)"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:36:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$1346","typeString":"contract IERC1822Proxiable"}},"id":763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6188:13:2","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":1345,"src":"6151:50:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6151:52:2","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":795,"nodeType":"TryStatement","src":"6147:437:2"}]},"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"5701:346:2","text":" @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC1967.\n Emits an {IERC1967-Upgraded} event."},"id":797,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6061:21:2","nodeType":"FunctionDefinition","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"newImplementation","nameLocation":"6091:17:2","nodeType":"VariableDeclaration","scope":797,"src":"6083:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"6083:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"data","nameLocation":"6123:4:2","nodeType":"VariableDeclaration","scope":797,"src":"6110:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":756,"name":"bytes","nodeType":"ElementaryTypeName","src":"6110:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6082:46:2"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"6137:0:2"},"scope":798,"src":"6052:538:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":799,"src":"986:5606:2","usedErrors":[379,382,643,648,1381,1394,1672,1675],"usedEvents":[387,1360]}],"src":"115:6478:2"},"id":2},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[844],"Initializable":[616]},"id":845,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":800,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:3"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":802,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":845,"sourceUnit":617,"src":"126:63:3","symbolAliases":[{"foreign":{"id":801,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"134:13:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":804,"name":"Initializable","nameLocations":["728:13:3"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"728:13:3"},"id":805,"nodeType":"InheritanceSpecifier","src":"728:13:3"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":803,"nodeType":"StructuredDocumentation","src":"191:496:3","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,"id":844,"linearizedBaseContracts":[844,616],"name":"ContextUpgradeable","nameLocation":"706:18:3","nodeType":"ContractDefinition","nodes":[{"body":{"id":810,"nodeType":"Block","src":"800:7:3","statements":[]},"id":811,"implemented":true,"kind":"function","modifiers":[{"id":808,"kind":"modifierInvocation","modifierName":{"id":807,"name":"onlyInitializing","nameLocations":["783:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"783:16:3"},"nodeType":"ModifierInvocation","src":"783:16:3"}],"name":"__Context_init","nameLocation":"757:14:3","nodeType":"FunctionDefinition","parameters":{"id":806,"nodeType":"ParameterList","parameters":[],"src":"771:2:3"},"returnParameters":{"id":809,"nodeType":"ParameterList","parameters":[],"src":"800:0:3"},"scope":844,"src":"748:59:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":816,"nodeType":"Block","src":"875:7:3","statements":[]},"id":817,"implemented":true,"kind":"function","modifiers":[{"id":814,"kind":"modifierInvocation","modifierName":{"id":813,"name":"onlyInitializing","nameLocations":["858:16:3"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"858:16:3"},"nodeType":"ModifierInvocation","src":"858:16:3"}],"name":"__Context_init_unchained","nameLocation":"822:24:3","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[],"src":"846:2:3"},"returnParameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"875:0:3"},"scope":844,"src":"813:69:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":825,"nodeType":"Block","src":"949:34:3","statements":[{"expression":{"expression":{"id":822,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:3","memberName":"sender","nodeType":"MemberAccess","src":"966:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":821,"id":824,"nodeType":"Return","src":"959:17:3"}]},"id":826,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:3","nodeType":"FunctionDefinition","parameters":{"id":818,"nodeType":"ParameterList","parameters":[],"src":"906:2:3"},"returnParameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":826,"src":"940:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":819,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:3"},"scope":844,"src":"887:96:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":834,"nodeType":"Block","src":"1056:32:3","statements":[{"expression":{"expression":{"id":831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:3","memberName":"data","nodeType":"MemberAccess","src":"1073:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":830,"id":833,"nodeType":"Return","src":"1066:15:3"}]},"id":835,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:3","nodeType":"FunctionDefinition","parameters":{"id":827,"nodeType":"ParameterList","parameters":[],"src":"1006:2:3"},"returnParameters":{"id":830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":835,"src":"1040:14:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":828,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:3"},"scope":844,"src":"989:99:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":842,"nodeType":"Block","src":"1166:25:3","statements":[{"expression":{"hexValue":"30","id":840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":839,"id":841,"nodeType":"Return","src":"1176:8:3"}]},"id":843,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:3","nodeType":"FunctionDefinition","parameters":{"id":836,"nodeType":"ParameterList","parameters":[],"src":"1123:2:3"},"returnParameters":{"id":839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":838,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":843,"src":"1157:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":837,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:3"},"scope":844,"src":"1094:97:3","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":845,"src":"688:505:3","usedErrors":[379,382],"usedEvents":[387]}],"src":"101:1093:3"},"id":3},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","exportedSymbols":{"EIP712Upgradeable":[1188],"IERC5267":[1336],"Initializable":[616],"MessageHashUtils":[2699]},"id":1189,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":846,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:4"},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","id":848,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1189,"sourceUnit":2700,"src":"139:97:4","symbolAliases":[{"foreign":{"id":847,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2699,"src":"147:16:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","file":"@openzeppelin/contracts/interfaces/IERC5267.sol","id":850,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1189,"sourceUnit":1337,"src":"237:73:4","symbolAliases":[{"foreign":{"id":849,"name":"IERC5267","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"245:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":852,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1189,"sourceUnit":617,"src":"311:66:4","symbolAliases":[{"foreign":{"id":851,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"319:13:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":854,"name":"Initializable","nameLocations":["1998:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"1998:13:4"},"id":855,"nodeType":"InheritanceSpecifier","src":"1998:13:4"},{"baseName":{"id":856,"name":"IERC5267","nameLocations":["2013:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":1336,"src":"2013:8:4"},"id":857,"nodeType":"InheritanceSpecifier","src":"2013:8:4"}],"canonicalName":"EIP712Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":853,"nodeType":"StructuredDocumentation","src":"379:1579:4","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n separator from the immutable values, which is cheaper than accessing a cached version in cold storage."},"fullyImplemented":true,"id":1188,"linearizedBaseContracts":[1188,1336,616],"name":"EIP712Upgradeable","nameLocation":"1977:17:4","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":862,"mutability":"constant","name":"TYPE_HASH","nameLocation":"2053:9:4","nodeType":"VariableDeclaration","scope":1188,"src":"2028:140:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2028:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2083:84:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":859,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2073:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2073:95:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"canonicalName":"EIP712Upgradeable.EIP712Storage","documentation":{"id":863,"nodeType":"StructuredDocumentation","src":"2175:64:4","text":"@custom:storage-location erc7201:openzeppelin.storage.EIP712"},"id":874,"members":[{"constant":false,"id":866,"mutability":"mutable","name":"_hashedName","nameLocation":"2332:11:4","nodeType":"VariableDeclaration","scope":874,"src":"2324:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":865,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2324:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":869,"mutability":"mutable","name":"_hashedVersion","nameLocation":"2413:14:4","nodeType":"VariableDeclaration","scope":874,"src":"2405:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":868,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2405:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":871,"mutability":"mutable","name":"_name","nameLocation":"2445:5:4","nodeType":"VariableDeclaration","scope":874,"src":"2438:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":870,"name":"string","nodeType":"ElementaryTypeName","src":"2438:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":873,"mutability":"mutable","name":"_version","nameLocation":"2467:8:4","nodeType":"VariableDeclaration","scope":874,"src":"2460:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":872,"name":"string","nodeType":"ElementaryTypeName","src":"2460:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"EIP712Storage","nameLocation":"2251:13:4","nodeType":"StructDefinition","scope":1188,"src":"2244:238:4","visibility":"public"},{"constant":true,"id":877,"mutability":"constant","name":"EIP712StorageLocation","nameLocation":"2623:21:4","nodeType":"VariableDeclaration","scope":1188,"src":"2598:115:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":875,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2598:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861313661343664393432363163373531376363386666383966363163306365393335393865336338343938303130313164656536343961366135353764313030","id":876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:66:4","typeDescriptions":{"typeIdentifier":"t_rational_73010143390315934406010559831118728393600729754696197287367516085911467577600_by_1","typeString":"int_const 7301...(69 digits omitted)...7600"},"value":"0xa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100"},"visibility":"private"},{"body":{"id":884,"nodeType":"Block","src":"2796:80:4","statements":[{"AST":{"nodeType":"YulBlock","src":"2815:55:4","statements":[{"nodeType":"YulAssignment","src":"2829:31:4","value":{"name":"EIP712StorageLocation","nodeType":"YulIdentifier","src":"2839:21:4"},"variableNames":[{"name":"$.slot","nodeType":"YulIdentifier","src":"2829:6:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":881,"isOffset":false,"isSlot":true,"src":"2829:6:4","suffix":"slot","valueSize":1},{"declaration":877,"isOffset":false,"isSlot":false,"src":"2839:21:4","valueSize":1}],"id":883,"nodeType":"InlineAssembly","src":"2806:64:4"}]},"id":885,"implemented":true,"kind":"function","modifiers":[],"name":"_getEIP712Storage","nameLocation":"2729:17:4","nodeType":"FunctionDefinition","parameters":{"id":878,"nodeType":"ParameterList","parameters":[],"src":"2746:2:4"},"returnParameters":{"id":882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":881,"mutability":"mutable","name":"$","nameLocation":"2793:1:4","nodeType":"VariableDeclaration","scope":885,"src":"2771:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":880,"nodeType":"UserDefinedTypeName","pathNode":{"id":879,"name":"EIP712Storage","nameLocations":["2771:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"2771:13:4"},"referencedDeclaration":874,"src":"2771:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"src":"2770:25:4"},"scope":1188,"src":"2720:156:4","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":900,"nodeType":"Block","src":"3538:55:4","statements":[{"expression":{"arguments":[{"id":896,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":888,"src":"3572:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":897,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":890,"src":"3578:7:4","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"}],"id":895,"name":"__EIP712_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":941,"src":"3548:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3548:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":899,"nodeType":"ExpressionStatement","src":"3548:38:4"}]},"documentation":{"id":886,"nodeType":"StructuredDocumentation","src":"2882:559:4","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":901,"implemented":true,"kind":"function","modifiers":[{"id":893,"kind":"modifierInvocation","modifierName":{"id":892,"name":"onlyInitializing","nameLocations":["3521:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3521:16:4"},"nodeType":"ModifierInvocation","src":"3521:16:4"}],"name":"__EIP712_init","nameLocation":"3455:13:4","nodeType":"FunctionDefinition","parameters":{"id":891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"name","nameLocation":"3483:4:4","nodeType":"VariableDeclaration","scope":901,"src":"3469:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":887,"name":"string","nodeType":"ElementaryTypeName","src":"3469:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":890,"mutability":"mutable","name":"version","nameLocation":"3503:7:4","nodeType":"VariableDeclaration","scope":901,"src":"3489:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":889,"name":"string","nodeType":"ElementaryTypeName","src":"3489:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3468:43:4"},"returnParameters":{"id":894,"nodeType":"ParameterList","parameters":[],"src":"3538:0:4"},"scope":1188,"src":"3446:147:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":940,"nodeType":"Block","src":"3701:228:4","statements":[{"assignments":[912],"declarations":[{"constant":false,"id":912,"mutability":"mutable","name":"$","nameLocation":"3733:1:4","nodeType":"VariableDeclaration","scope":940,"src":"3711:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":911,"nodeType":"UserDefinedTypeName","pathNode":{"id":910,"name":"EIP712Storage","nameLocations":["3711:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"3711:13:4"},"referencedDeclaration":874,"src":"3711:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":915,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":913,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"3737:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3737:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3711:45:4"},{"expression":{"id":920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":916,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3766:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3768:5:4","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":871,"src":"3766:7:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":919,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"3776:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3766:14:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":921,"nodeType":"ExpressionStatement","src":"3766:14:4"},{"expression":{"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":922,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3790:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":924,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3792:8:4","memberName":"_version","nodeType":"MemberAccess","referencedDeclaration":873,"src":"3790:10:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":925,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":905,"src":"3803:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3790:20:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":927,"nodeType":"ExpressionStatement","src":"3790:20:4"},{"expression":{"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":928,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3875:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3877:11:4","memberName":"_hashedName","nodeType":"MemberAccess","referencedDeclaration":866,"src":"3875:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3891:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3875:17:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":933,"nodeType":"ExpressionStatement","src":"3875:17:4"},{"expression":{"id":938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":934,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":912,"src":"3902:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3904:14:4","memberName":"_hashedVersion","nodeType":"MemberAccess","referencedDeclaration":869,"src":"3902:16:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3921:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3902:20:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":939,"nodeType":"ExpressionStatement","src":"3902:20:4"}]},"id":941,"implemented":true,"kind":"function","modifiers":[{"id":908,"kind":"modifierInvocation","modifierName":{"id":907,"name":"onlyInitializing","nameLocations":["3684:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"3684:16:4"},"nodeType":"ModifierInvocation","src":"3684:16:4"}],"name":"__EIP712_init_unchained","nameLocation":"3608:23:4","nodeType":"FunctionDefinition","parameters":{"id":906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"name","nameLocation":"3646:4:4","nodeType":"VariableDeclaration","scope":941,"src":"3632:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":902,"name":"string","nodeType":"ElementaryTypeName","src":"3632:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":905,"mutability":"mutable","name":"version","nameLocation":"3666:7:4","nodeType":"VariableDeclaration","scope":941,"src":"3652:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":904,"name":"string","nodeType":"ElementaryTypeName","src":"3652:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3631:43:4"},"returnParameters":{"id":909,"nodeType":"ParameterList","parameters":[],"src":"3701:0:4"},"scope":1188,"src":"3599:330:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":950,"nodeType":"Block","src":"4077:47:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":947,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"4094:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4094:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":946,"id":949,"nodeType":"Return","src":"4087:30:4"}]},"documentation":{"id":942,"nodeType":"StructuredDocumentation","src":"3935:75:4","text":" @dev Returns the domain separator for the current chain."},"id":951,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nameLocation":"4024:18:4","nodeType":"FunctionDefinition","parameters":{"id":943,"nodeType":"ParameterList","parameters":[],"src":"4042:2:4"},"returnParameters":{"id":946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":951,"src":"4068:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":944,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4068:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4067:9:4"},"scope":1188,"src":"4015:109:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":973,"nodeType":"Block","src":"4194:127:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":959,"name":"TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":862,"src":"4232:9:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":960,"name":"_EIP712NameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"4243:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4243:17:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":962,"name":"_EIP712VersionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"4262:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":964,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4284:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4290:7:4","memberName":"chainid","nodeType":"MemberAccess","src":"4284:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":968,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4307:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712Upgradeable_$1188","typeString":"contract EIP712Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712Upgradeable_$1188","typeString":"contract EIP712Upgradeable"}],"id":967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4299:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":966,"name":"address","nodeType":"ElementaryTypeName","src":"4299:7:4","typeDescriptions":{}}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4299:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":957,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4221:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4225:6:4","memberName":"encode","nodeType":"MemberAccess","src":"4221:10:4","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4221:92:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":956,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4211:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4211:103:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":955,"id":972,"nodeType":"Return","src":"4204:110:4"}]},"id":974,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nameLocation":"4139:21:4","nodeType":"FunctionDefinition","parameters":{"id":952,"nodeType":"ParameterList","parameters":[],"src":"4160:2:4"},"returnParameters":{"id":955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":974,"src":"4185:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":953,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4185:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4184:9:4"},"scope":1188,"src":"4130:191:4","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":989,"nodeType":"Block","src":"5032:90:4","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":984,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":951,"src":"5082:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5082:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":986,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"5104:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":982,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2699,"src":"5049:16:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MessageHashUtils_$2699_$","typeString":"type(library MessageHashUtils)"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5066:15:4","memberName":"toTypedDataHash","nodeType":"MemberAccess","referencedDeclaration":2698,"src":"5049:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5049:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":981,"id":988,"nodeType":"Return","src":"5042:73:4"}]},"documentation":{"id":975,"nodeType":"StructuredDocumentation","src":"4327:614:4","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":990,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nameLocation":"4955:16:4","nodeType":"FunctionDefinition","parameters":{"id":978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":977,"mutability":"mutable","name":"structHash","nameLocation":"4980:10:4","nodeType":"VariableDeclaration","scope":990,"src":"4972:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4972:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4971:20:4"},"returnParameters":{"id":981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":980,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":990,"src":"5023:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5023:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5022:9:4"},"scope":1188,"src":"4946:176:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1335],"body":{"id":1050,"nodeType":"Block","src":"5501:575:4","statements":[{"assignments":[1011],"declarations":[{"constant":false,"id":1011,"mutability":"mutable","name":"$","nameLocation":"5533:1:4","nodeType":"VariableDeclaration","scope":1050,"src":"5511:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1010,"nodeType":"UserDefinedTypeName","pathNode":{"id":1009,"name":"EIP712Storage","nameLocations":["5511:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"5511:13:4"},"referencedDeclaration":874,"src":"5511:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1014,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1012,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"5537:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5537:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5511:45:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1016,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1011,"src":"5777:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5779:11:4","memberName":"_hashedName","nodeType":"MemberAccess","referencedDeclaration":866,"src":"5777:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5794:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5777:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1020,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1011,"src":"5799:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5801:14:4","memberName":"_hashedVersion","nodeType":"MemberAccess","referencedDeclaration":869,"src":"5799:16:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5819:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5799:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5777:43:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4549503731323a20556e696e697469616c697a6564","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5822:23:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade","typeString":"literal_string \"EIP712: Uninitialized\""},"value":"EIP712: Uninitialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade","typeString":"literal_string \"EIP712: Uninitialized\""}],"id":1015,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5769:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5769:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1027,"nodeType":"ExpressionStatement","src":"5769:77:4"},{"expression":{"components":[{"hexValue":"0f","id":1028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"5878:7:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c","typeString":"literal_string hex\"0f\""},"value":"\u000f"},{"arguments":[],"expression":{"argumentTypes":[],"id":1029,"name":"_EIP712Name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"5908:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5908:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1031,"name":"_EIP712Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1083,"src":"5935:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5935:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":1033,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5965:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5971:7:4","memberName":"chainid","nodeType":"MemberAccess","src":"5965:13:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":1037,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6000:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712Upgradeable_$1188","typeString":"contract EIP712Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712Upgradeable_$1188","typeString":"contract EIP712Upgradeable"}],"id":1036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5992:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1035,"name":"address","nodeType":"ElementaryTypeName","src":"5992:7:4","typeDescriptions":{}}},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5992:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":1041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6027:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6019:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1039,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6019:7:4","typeDescriptions":{}}},"id":1042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6019:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":1046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6057:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6043:13:4","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":1043,"name":"uint256","nodeType":"ElementaryTypeName","src":"6047:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1044,"nodeType":"ArrayTypeName","src":"6047:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":1047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6043:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":1048,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5864:205:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(literal_string hex\"0f\",string memory,string memory,uint256,address,bytes32,uint256[] memory)"}},"functionReturnParameters":1008,"id":1049,"nodeType":"Return","src":"5857:212:4"}]},"documentation":{"id":991,"nodeType":"StructuredDocumentation","src":"5128:40:4","text":" @dev See {IERC-5267}."},"functionSelector":"84b0196e","id":1051,"implemented":true,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"5182:12:4","nodeType":"FunctionDefinition","parameters":{"id":992,"nodeType":"ParameterList","parameters":[],"src":"5194:2:4"},"returnParameters":{"id":1008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":994,"mutability":"mutable","name":"fields","nameLocation":"5278:6:4","nodeType":"VariableDeclaration","scope":1051,"src":"5271:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":993,"name":"bytes1","nodeType":"ElementaryTypeName","src":"5271:6:4","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":996,"mutability":"mutable","name":"name","nameLocation":"5312:4:4","nodeType":"VariableDeclaration","scope":1051,"src":"5298:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":995,"name":"string","nodeType":"ElementaryTypeName","src":"5298:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":998,"mutability":"mutable","name":"version","nameLocation":"5344:7:4","nodeType":"VariableDeclaration","scope":1051,"src":"5330:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":997,"name":"string","nodeType":"ElementaryTypeName","src":"5330:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1000,"mutability":"mutable","name":"chainId","nameLocation":"5373:7:4","nodeType":"VariableDeclaration","scope":1051,"src":"5365:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":999,"name":"uint256","nodeType":"ElementaryTypeName","src":"5365:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1002,"mutability":"mutable","name":"verifyingContract","nameLocation":"5402:17:4","nodeType":"VariableDeclaration","scope":1051,"src":"5394:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1001,"name":"address","nodeType":"ElementaryTypeName","src":"5394:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1004,"mutability":"mutable","name":"salt","nameLocation":"5441:4:4","nodeType":"VariableDeclaration","scope":1051,"src":"5433:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1003,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5433:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1007,"mutability":"mutable","name":"extensions","nameLocation":"5476:10:4","nodeType":"VariableDeclaration","scope":1051,"src":"5459:27:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1005,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1006,"nodeType":"ArrayTypeName","src":"5459:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5257:239:4"},"scope":1188,"src":"5173:903:4","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1066,"nodeType":"Block","src":"6369:86:4","statements":[{"assignments":[1059],"declarations":[{"constant":false,"id":1059,"mutability":"mutable","name":"$","nameLocation":"6401:1:4","nodeType":"VariableDeclaration","scope":1066,"src":"6379:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1058,"nodeType":"UserDefinedTypeName","pathNode":{"id":1057,"name":"EIP712Storage","nameLocations":["6379:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"6379:13:4"},"referencedDeclaration":874,"src":"6379:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1062,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1060,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"6405:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6405:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6379:45:4"},{"expression":{"expression":{"id":1063,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1059,"src":"6441:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6443:5:4","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":871,"src":"6441:7:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1056,"id":1065,"nodeType":"Return","src":"6434:14:4"}]},"documentation":{"id":1052,"nodeType":"StructuredDocumentation","src":"6082:213:4","text":" @dev The name parameter for the EIP712 domain.\n NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n are a concern."},"id":1067,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712Name","nameLocation":"6309:11:4","nodeType":"FunctionDefinition","parameters":{"id":1053,"nodeType":"ParameterList","parameters":[],"src":"6320:2:4"},"returnParameters":{"id":1056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1067,"src":"6354:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1054,"name":"string","nodeType":"ElementaryTypeName","src":"6354:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6353:15:4"},"scope":1188,"src":"6300:155:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1082,"nodeType":"Block","src":"6754:89:4","statements":[{"assignments":[1075],"declarations":[{"constant":false,"id":1075,"mutability":"mutable","name":"$","nameLocation":"6786:1:4","nodeType":"VariableDeclaration","scope":1082,"src":"6764:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1074,"nodeType":"UserDefinedTypeName","pathNode":{"id":1073,"name":"EIP712Storage","nameLocations":["6764:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"6764:13:4"},"referencedDeclaration":874,"src":"6764:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1078,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1076,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"6790:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6790:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6764:45:4"},{"expression":{"expression":{"id":1079,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"6826:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6828:8:4","memberName":"_version","nodeType":"MemberAccess","referencedDeclaration":873,"src":"6826:10:4","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":1072,"id":1081,"nodeType":"Return","src":"6819:17:4"}]},"documentation":{"id":1068,"nodeType":"StructuredDocumentation","src":"6461:216:4","text":" @dev The version parameter for the EIP712 domain.\n NOTE: This function reads from storage by default, but can be redefined to return a constant value if gas costs\n are a concern."},"id":1083,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712Version","nameLocation":"6691:14:4","nodeType":"FunctionDefinition","parameters":{"id":1069,"nodeType":"ParameterList","parameters":[],"src":"6705:2:4"},"returnParameters":{"id":1072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1071,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1083,"src":"6739:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1070,"name":"string","nodeType":"ElementaryTypeName","src":"6739:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6738:15:4"},"scope":1188,"src":"6682:161:4","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1134,"nodeType":"Block","src":"7117:628:4","statements":[{"assignments":[1091],"declarations":[{"constant":false,"id":1091,"mutability":"mutable","name":"$","nameLocation":"7149:1:4","nodeType":"VariableDeclaration","scope":1134,"src":"7127:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1090,"nodeType":"UserDefinedTypeName","pathNode":{"id":1089,"name":"EIP712Storage","nameLocations":["7127:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"7127:13:4"},"referencedDeclaration":874,"src":"7127:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1094,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1092,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"7153:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7153:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7127:45:4"},{"assignments":[1096],"declarations":[{"constant":false,"id":1096,"mutability":"mutable","name":"name","nameLocation":"7196:4:4","nodeType":"VariableDeclaration","scope":1134,"src":"7182:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1095,"name":"string","nodeType":"ElementaryTypeName","src":"7182:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1099,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1097,"name":"_EIP712Name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"7203:11:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7203:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"7182:34:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1102,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"7236:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7230:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1100,"name":"bytes","nodeType":"ElementaryTypeName","src":"7230:5:4","typeDescriptions":{}}},"id":1103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7230:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7242:6:4","memberName":"length","nodeType":"MemberAccess","src":"7230:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7230:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1132,"nodeType":"Block","src":"7314:425:4","statements":[{"assignments":[1116],"declarations":[{"constant":false,"id":1116,"mutability":"mutable","name":"hashedName","nameLocation":"7559:10:4","nodeType":"VariableDeclaration","scope":1132,"src":"7551:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1115,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7551:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1119,"initialValue":{"expression":{"id":1117,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1091,"src":"7572:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1118,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7574:11:4","memberName":"_hashedName","nodeType":"MemberAccess","referencedDeclaration":866,"src":"7572:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7551:34:4"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1120,"name":"hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"7603:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7617:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7603:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1130,"nodeType":"Block","src":"7676:53:4","statements":[{"expression":{"arguments":[{"hexValue":"","id":1127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7711:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1126,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7701:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7701:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1088,"id":1129,"nodeType":"Return","src":"7694:20:4"}]},"id":1131,"nodeType":"IfStatement","src":"7599:130:4","trueBody":{"id":1125,"nodeType":"Block","src":"7620:50:4","statements":[{"expression":{"id":1123,"name":"hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"7645:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1088,"id":1124,"nodeType":"Return","src":"7638:17:4"}]}}]},"id":1133,"nodeType":"IfStatement","src":"7226:513:4","trueBody":{"id":1114,"nodeType":"Block","src":"7254:54:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":1110,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1096,"src":"7291:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7285:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1108,"name":"bytes","nodeType":"ElementaryTypeName","src":"7285:5:4","typeDescriptions":{}}},"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7285:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1107,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7275:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7275:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1088,"id":1113,"nodeType":"Return","src":"7268:29:4"}]}}]},"documentation":{"id":1084,"nodeType":"StructuredDocumentation","src":"6849:204:4","text":" @dev The hash of the name parameter for the EIP712 domain.\n NOTE: In previous versions this function was virtual. In this version you should override `_EIP712Name` instead."},"id":1135,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712NameHash","nameLocation":"7067:15:4","nodeType":"FunctionDefinition","parameters":{"id":1085,"nodeType":"ParameterList","parameters":[],"src":"7082:2:4"},"returnParameters":{"id":1088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1135,"src":"7108:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1086,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7108:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7107:9:4"},"scope":1188,"src":"7058:687:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1186,"nodeType":"Block","src":"8028:661:4","statements":[{"assignments":[1143],"declarations":[{"constant":false,"id":1143,"mutability":"mutable","name":"$","nameLocation":"8060:1:4","nodeType":"VariableDeclaration","scope":1186,"src":"8038:23:4","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"},"typeName":{"id":1142,"nodeType":"UserDefinedTypeName","pathNode":{"id":1141,"name":"EIP712Storage","nameLocations":["8038:13:4"],"nodeType":"IdentifierPath","referencedDeclaration":874,"src":"8038:13:4"},"referencedDeclaration":874,"src":"8038:13:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage"}},"visibility":"internal"}],"id":1146,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1144,"name":"_getEIP712Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"8064:17:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_EIP712Storage_$874_storage_ptr_$","typeString":"function () pure returns (struct EIP712Upgradeable.EIP712Storage storage pointer)"}},"id":1145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8064:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8038:45:4"},{"assignments":[1148],"declarations":[{"constant":false,"id":1148,"mutability":"mutable","name":"version","nameLocation":"8107:7:4","nodeType":"VariableDeclaration","scope":1186,"src":"8093:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1147,"name":"string","nodeType":"ElementaryTypeName","src":"8093:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1151,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1149,"name":"_EIP712Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1083,"src":"8117:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8117:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"8093:40:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1154,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"8153:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8147:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1152,"name":"bytes","nodeType":"ElementaryTypeName","src":"8147:5:4","typeDescriptions":{}}},"id":1155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8147:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8162:6:4","memberName":"length","nodeType":"MemberAccess","src":"8147:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8171:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8147:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1184,"nodeType":"Block","src":"8237:446:4","statements":[{"assignments":[1168],"declarations":[{"constant":false,"id":1168,"mutability":"mutable","name":"hashedVersion","nameLocation":"8491:13:4","nodeType":"VariableDeclaration","scope":1184,"src":"8483:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1167,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8483:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1171,"initialValue":{"expression":{"id":1169,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"8507:1:4","typeDescriptions":{"typeIdentifier":"t_struct$_EIP712Storage_$874_storage_ptr","typeString":"struct EIP712Upgradeable.EIP712Storage storage pointer"}},"id":1170,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8509:14:4","memberName":"_hashedVersion","nodeType":"MemberAccess","referencedDeclaration":869,"src":"8507:16:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8483:40:4"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1172,"name":"hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"8541:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8558:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8541:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1182,"nodeType":"Block","src":"8620:53:4","statements":[{"expression":{"arguments":[{"hexValue":"","id":1179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8655:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":1178,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8645:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8645:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1140,"id":1181,"nodeType":"Return","src":"8638:20:4"}]},"id":1183,"nodeType":"IfStatement","src":"8537:136:4","trueBody":{"id":1177,"nodeType":"Block","src":"8561:53:4","statements":[{"expression":{"id":1175,"name":"hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"8586:13:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1140,"id":1176,"nodeType":"Return","src":"8579:20:4"}]}}]},"id":1185,"nodeType":"IfStatement","src":"8143:540:4","trueBody":{"id":1166,"nodeType":"Block","src":"8174:57:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":1162,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"8211:7:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8205:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1160,"name":"bytes","nodeType":"ElementaryTypeName","src":"8205:5:4","typeDescriptions":{}}},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8205:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1159,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8195:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8195:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1140,"id":1165,"nodeType":"Return","src":"8188:32:4"}]}}]},"documentation":{"id":1136,"nodeType":"StructuredDocumentation","src":"7751:210:4","text":" @dev The hash of the version parameter for the EIP712 domain.\n NOTE: In previous versions this function was virtual. In this version you should override `_EIP712Version` instead."},"id":1187,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712VersionHash","nameLocation":"7975:18:4","nodeType":"FunctionDefinition","parameters":{"id":1137,"nodeType":"ParameterList","parameters":[],"src":"7993:2:4"},"returnParameters":{"id":1140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1139,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1187,"src":"8019:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8019:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8018:9:4"},"scope":1188,"src":"7966:723:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1189,"src":"1959:6732:4","usedErrors":[379,382],"usedEvents":[387,1316]}],"src":"113:8579:4"},"id":4},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[1228],"IERC165":[2711],"Initializable":[616]},"id":1229,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1190,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:5"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":1192,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1229,"sourceUnit":2712,"src":"140:80:5","symbolAliases":[{"foreign":{"id":1191,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2711,"src":"148:7:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":1194,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1229,"sourceUnit":617,"src":"221:66:5","symbolAliases":[{"foreign":{"id":1193,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"229:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1196,"name":"Initializable","nameLocations":["807:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"807:13:5"},"id":1197,"nodeType":"InheritanceSpecifier","src":"807:13:5"},{"baseName":{"id":1198,"name":"IERC165","nameLocations":["822:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":2711,"src":"822:7:5"},"id":1199,"nodeType":"InheritanceSpecifier","src":"822:7:5"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1195,"nodeType":"StructuredDocumentation","src":"289:478:5","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,"id":1228,"linearizedBaseContracts":[1228,2711,616],"name":"ERC165Upgradeable","nameLocation":"786:17:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":1204,"nodeType":"Block","src":"887:7:5","statements":[]},"id":1205,"implemented":true,"kind":"function","modifiers":[{"id":1202,"kind":"modifierInvocation","modifierName":{"id":1201,"name":"onlyInitializing","nameLocations":["870:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"870:16:5"},"nodeType":"ModifierInvocation","src":"870:16:5"}],"name":"__ERC165_init","nameLocation":"845:13:5","nodeType":"FunctionDefinition","parameters":{"id":1200,"nodeType":"ParameterList","parameters":[],"src":"858:2:5"},"returnParameters":{"id":1203,"nodeType":"ParameterList","parameters":[],"src":"887:0:5"},"scope":1228,"src":"836:58:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1210,"nodeType":"Block","src":"961:7:5","statements":[]},"id":1211,"implemented":true,"kind":"function","modifiers":[{"id":1208,"kind":"modifierInvocation","modifierName":{"id":1207,"name":"onlyInitializing","nameLocations":["944:16:5"],"nodeType":"IdentifierPath","referencedDeclaration":525,"src":"944:16:5"},"nodeType":"ModifierInvocation","src":"944:16:5"}],"name":"__ERC165_init_unchained","nameLocation":"909:23:5","nodeType":"FunctionDefinition","parameters":{"id":1206,"nodeType":"ParameterList","parameters":[],"src":"932:2:5"},"returnParameters":{"id":1209,"nodeType":"ParameterList","parameters":[],"src":"961:0:5"},"scope":1228,"src":"900:68:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2710],"body":{"id":1226,"nodeType":"Block","src":"1116:64:5","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1219,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1214,"src":"1133:11:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1221,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2711,"src":"1153:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2711_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2711_$","typeString":"type(contract IERC165)"}],"id":1220,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1148:4:5","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2711","typeString":"type(contract IERC165)"}},"id":1223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1162:11:5","memberName":"interfaceId","nodeType":"MemberAccess","src":"1148:25:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1133:40:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1218,"id":1225,"nodeType":"Return","src":"1126:47:5"}]},"documentation":{"id":1212,"nodeType":"StructuredDocumentation","src":"973:56:5","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":1227,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1043:17:5","nodeType":"FunctionDefinition","parameters":{"id":1215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1214,"mutability":"mutable","name":"interfaceId","nameLocation":"1068:11:5","nodeType":"VariableDeclaration","scope":1227,"src":"1061:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1213,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1061:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1060:20:5"},"returnParameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1227,"src":"1110:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1216,"name":"bool","nodeType":"ElementaryTypeName","src":"1110:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1109:6:5"},"scope":1228,"src":"1034:146:5","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":1229,"src":"768:414:5","usedErrors":[379,382],"usedEvents":[387]}],"src":"114:1069:5"},"id":5},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[1311]},"id":1312,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1230,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":1231,"nodeType":"StructuredDocumentation","src":"135:89:6","text":" @dev External interface of AccessControl declared to support ERC165 detection."},"fullyImplemented":false,"id":1311,"linearizedBaseContracts":[1311],"name":"IAccessControl","nameLocation":"235:14:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1232,"nodeType":"StructuredDocumentation","src":"256:56:6","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","id":1238,"name":"AccessControlUnauthorizedAccount","nameLocation":"323:32:6","nodeType":"ErrorDefinition","parameters":{"id":1237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1234,"mutability":"mutable","name":"account","nameLocation":"364:7:6","nodeType":"VariableDeclaration","scope":1238,"src":"356:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1233,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1236,"mutability":"mutable","name":"neededRole","nameLocation":"381:10:6","nodeType":"VariableDeclaration","scope":1238,"src":"373:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1235,"name":"bytes32","nodeType":"ElementaryTypeName","src":"373:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"355:37:6"},"src":"317:76:6"},{"documentation":{"id":1239,"nodeType":"StructuredDocumentation","src":"399:148:6","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","id":1241,"name":"AccessControlBadConfirmation","nameLocation":"558:28:6","nodeType":"ErrorDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[],"src":"586:2:6"},"src":"552:37:6"},{"anonymous":false,"documentation":{"id":1242,"nodeType":"StructuredDocumentation","src":"595:254:6","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":1250,"name":"RoleAdminChanged","nameLocation":"860:16:6","nodeType":"EventDefinition","parameters":{"id":1249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1244,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"893:4:6","nodeType":"VariableDeclaration","scope":1250,"src":"877:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"877:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1246,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"915:17:6","nodeType":"VariableDeclaration","scope":1250,"src":"899:33:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1245,"name":"bytes32","nodeType":"ElementaryTypeName","src":"899:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1248,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"950:12:6","nodeType":"VariableDeclaration","scope":1250,"src":"934:28:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1247,"name":"bytes32","nodeType":"ElementaryTypeName","src":"934:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"876:87:6"},"src":"854:110:6"},{"anonymous":false,"documentation":{"id":1251,"nodeType":"StructuredDocumentation","src":"970:212:6","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {AccessControl-_setupRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":1259,"name":"RoleGranted","nameLocation":"1193:11:6","nodeType":"EventDefinition","parameters":{"id":1258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1253,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1221:4:6","nodeType":"VariableDeclaration","scope":1259,"src":"1205:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1252,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1205:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1255,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1243:7:6","nodeType":"VariableDeclaration","scope":1259,"src":"1227:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1254,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1257,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1268:6:6","nodeType":"VariableDeclaration","scope":1259,"src":"1252:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1256,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1204:71:6"},"src":"1187:89:6"},{"anonymous":false,"documentation":{"id":1260,"nodeType":"StructuredDocumentation","src":"1282:275:6","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":1268,"name":"RoleRevoked","nameLocation":"1568:11:6","nodeType":"EventDefinition","parameters":{"id":1267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1262,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1596:4:6","nodeType":"VariableDeclaration","scope":1268,"src":"1580:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1261,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1580:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1264,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1618:7:6","nodeType":"VariableDeclaration","scope":1268,"src":"1602:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1263,"name":"address","nodeType":"ElementaryTypeName","src":"1602:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1266,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1643:6:6","nodeType":"VariableDeclaration","scope":1268,"src":"1627:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1265,"name":"address","nodeType":"ElementaryTypeName","src":"1627:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1579:71:6"},"src":"1562:89:6"},{"documentation":{"id":1269,"nodeType":"StructuredDocumentation","src":"1657:76:6","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":1278,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1747:7:6","nodeType":"FunctionDefinition","parameters":{"id":1274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1271,"mutability":"mutable","name":"role","nameLocation":"1763:4:6","nodeType":"VariableDeclaration","scope":1278,"src":"1755:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1270,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1755:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1273,"mutability":"mutable","name":"account","nameLocation":"1777:7:6","nodeType":"VariableDeclaration","scope":1278,"src":"1769:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1272,"name":"address","nodeType":"ElementaryTypeName","src":"1769:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1754:31:6"},"returnParameters":{"id":1277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1276,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1278,"src":"1809:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1275,"name":"bool","nodeType":"ElementaryTypeName","src":"1809:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1808:6:6"},"scope":1311,"src":"1738:77:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1279,"nodeType":"StructuredDocumentation","src":"1821:184:6","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":1286,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2019:12:6","nodeType":"FunctionDefinition","parameters":{"id":1282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1281,"mutability":"mutable","name":"role","nameLocation":"2040:4:6","nodeType":"VariableDeclaration","scope":1286,"src":"2032:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1280,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2032:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2031:14:6"},"returnParameters":{"id":1285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1286,"src":"2069:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1283,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2069:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2068:9:6"},"scope":1311,"src":"2010:68:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1287,"nodeType":"StructuredDocumentation","src":"2084:239:6","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":1294,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2337:9:6","nodeType":"FunctionDefinition","parameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1289,"mutability":"mutable","name":"role","nameLocation":"2355:4:6","nodeType":"VariableDeclaration","scope":1294,"src":"2347:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1288,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2347:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"account","nameLocation":"2369:7:6","nodeType":"VariableDeclaration","scope":1294,"src":"2361:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1290,"name":"address","nodeType":"ElementaryTypeName","src":"2361:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2346:31:6"},"returnParameters":{"id":1293,"nodeType":"ParameterList","parameters":[],"src":"2386:0:6"},"scope":1311,"src":"2328:59:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"2393:223:6","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":1302,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2630:10:6","nodeType":"FunctionDefinition","parameters":{"id":1300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"role","nameLocation":"2649:4:6","nodeType":"VariableDeclaration","scope":1302,"src":"2641:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2641:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1299,"mutability":"mutable","name":"account","nameLocation":"2663:7:6","nodeType":"VariableDeclaration","scope":1302,"src":"2655:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1298,"name":"address","nodeType":"ElementaryTypeName","src":"2655:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2640:31:6"},"returnParameters":{"id":1301,"nodeType":"ParameterList","parameters":[],"src":"2680:0:6"},"scope":1311,"src":"2621:60:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1303,"nodeType":"StructuredDocumentation","src":"2687:491:6","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","id":1310,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3192:12:6","nodeType":"FunctionDefinition","parameters":{"id":1308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1305,"mutability":"mutable","name":"role","nameLocation":"3213:4:6","nodeType":"VariableDeclaration","scope":1310,"src":"3205:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1304,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3205:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1307,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3227:18:6","nodeType":"VariableDeclaration","scope":1310,"src":"3219:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1306,"name":"address","nodeType":"ElementaryTypeName","src":"3219:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3204:42:6"},"returnParameters":{"id":1309,"nodeType":"ParameterList","parameters":[],"src":"3255:0:6"},"scope":1311,"src":"3183:73:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1312,"src":"225:3033:6","usedErrors":[1238,1241],"usedEvents":[1250,1259,1268]}],"src":"109:3150:6"},"id":6},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","exportedSymbols":{"IERC5267":[1336]},"id":1337,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1313,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:7"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC5267","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1336,"linearizedBaseContracts":[1336],"name":"IERC5267","nameLocation":"143:8:7","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1314,"nodeType":"StructuredDocumentation","src":"158:84:7","text":" @dev MAY be emitted to signal that the domain could have changed."},"eventSelector":"0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31","id":1316,"name":"EIP712DomainChanged","nameLocation":"253:19:7","nodeType":"EventDefinition","parameters":{"id":1315,"nodeType":"ParameterList","parameters":[],"src":"272:2:7"},"src":"247:28:7"},{"documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"281:140:7","text":" @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n signature."},"functionSelector":"84b0196e","id":1335,"implemented":false,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"435:12:7","nodeType":"FunctionDefinition","parameters":{"id":1318,"nodeType":"ParameterList","parameters":[],"src":"447:2:7"},"returnParameters":{"id":1334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1320,"mutability":"mutable","name":"fields","nameLocation":"517:6:7","nodeType":"VariableDeclaration","scope":1335,"src":"510:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":1319,"name":"bytes1","nodeType":"ElementaryTypeName","src":"510:6:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":1322,"mutability":"mutable","name":"name","nameLocation":"551:4:7","nodeType":"VariableDeclaration","scope":1335,"src":"537:18:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1321,"name":"string","nodeType":"ElementaryTypeName","src":"537:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1324,"mutability":"mutable","name":"version","nameLocation":"583:7:7","nodeType":"VariableDeclaration","scope":1335,"src":"569:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1323,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1326,"mutability":"mutable","name":"chainId","nameLocation":"612:7:7","nodeType":"VariableDeclaration","scope":1335,"src":"604:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1325,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1328,"mutability":"mutable","name":"verifyingContract","nameLocation":"641:17:7","nodeType":"VariableDeclaration","scope":1335,"src":"633:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1327,"name":"address","nodeType":"ElementaryTypeName","src":"633:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1330,"mutability":"mutable","name":"salt","nameLocation":"680:4:7","nodeType":"VariableDeclaration","scope":1335,"src":"672:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1329,"name":"bytes32","nodeType":"ElementaryTypeName","src":"672:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1333,"mutability":"mutable","name":"extensions","nameLocation":"715:10:7","nodeType":"VariableDeclaration","scope":1335,"src":"698:27:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1332,"nodeType":"ArrayTypeName","src":"698:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"496:239:7"},"scope":1336,"src":"426:310:7","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1337,"src":"133:605:7","usedErrors":[],"usedEvents":[1316]}],"src":"107:632:7"},"id":7},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[1346]},"id":1347,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1338,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1339,"nodeType":"StructuredDocumentation","src":"139:203:8","text":" @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation."},"fullyImplemented":false,"id":1346,"linearizedBaseContracts":[1346],"name":"IERC1822Proxiable","nameLocation":"353:17:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1340,"nodeType":"StructuredDocumentation","src":"377:438:8","text":" @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy."},"functionSelector":"52d1902d","id":1345,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"829:13:8","nodeType":"FunctionDefinition","parameters":{"id":1341,"nodeType":"ParameterList","parameters":[],"src":"842:2:8"},"returnParameters":{"id":1344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1345,"src":"868:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"868:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"867:9:8"},"scope":1346,"src":"820:57:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1347,"src":"343:536:8","usedErrors":[],"usedEvents":[]}],"src":"113:767:8"},"id":8},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[1912],"ERC1967Utils":[1649],"IBeacon":[1659],"StorageSlot":[2022]},"id":1650,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1348,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:9"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":1350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1650,"sourceUnit":1660,"src":"140:46:9","symbolAliases":[{"foreign":{"id":1349,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"148:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":1352,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1650,"sourceUnit":1913,"src":"187:48:9","symbolAliases":[{"foreign":{"id":1351,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"195:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":1354,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1650,"sourceUnit":2023,"src":"236:56:9","symbolAliases":[{"foreign":{"id":1353,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"244:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":1355,"nodeType":"StructuredDocumentation","src":"294:154:9","text":" @dev This abstract contract provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots."},"fullyImplemented":true,"id":1649,"linearizedBaseContracts":[1649],"name":"ERC1967Utils","nameLocation":"457:12:9","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1356,"nodeType":"StructuredDocumentation","src":"660:68:9","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":1360,"name":"Upgraded","nameLocation":"739:8:9","nodeType":"EventDefinition","parameters":{"id":1359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1358,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"764:14:9","nodeType":"VariableDeclaration","scope":1360,"src":"748:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1357,"name":"address","nodeType":"ElementaryTypeName","src":"748:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"747:32:9"},"src":"733:47:9"},{"anonymous":false,"documentation":{"id":1361,"nodeType":"StructuredDocumentation","src":"786:67:9","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":1367,"name":"AdminChanged","nameLocation":"864:12:9","nodeType":"EventDefinition","parameters":{"id":1366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1363,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"885:13:9","nodeType":"VariableDeclaration","scope":1367,"src":"877:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1362,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1365,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"908:8:9","nodeType":"VariableDeclaration","scope":1367,"src":"900:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1364,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"876:41:9"},"src":"858:60:9"},{"anonymous":false,"documentation":{"id":1368,"nodeType":"StructuredDocumentation","src":"924:59:9","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":1372,"name":"BeaconUpgraded","nameLocation":"994:14:9","nodeType":"EventDefinition","parameters":{"id":1371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1370,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"1025:6:9","nodeType":"VariableDeclaration","scope":1372,"src":"1009:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1369,"name":"address","nodeType":"ElementaryTypeName","src":"1009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1008:24:9"},"src":"988:45:9"},{"constant":true,"documentation":{"id":1373,"nodeType":"StructuredDocumentation","src":"1039:170:9","text":" @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1."},"id":1376,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"1305:19:9","nodeType":"VariableDeclaration","scope":1649,"src":"1279:114:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1279:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1327:66:9","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":1377,"nodeType":"StructuredDocumentation","src":"1400:69:9","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":1381,"name":"ERC1967InvalidImplementation","nameLocation":"1480:28:9","nodeType":"ErrorDefinition","parameters":{"id":1380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1379,"mutability":"mutable","name":"implementation","nameLocation":"1517:14:9","nodeType":"VariableDeclaration","scope":1381,"src":"1509:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1378,"name":"address","nodeType":"ElementaryTypeName","src":"1509:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1508:24:9"},"src":"1474:59:9"},{"documentation":{"id":1382,"nodeType":"StructuredDocumentation","src":"1539:60:9","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":1386,"name":"ERC1967InvalidAdmin","nameLocation":"1610:19:9","nodeType":"ErrorDefinition","parameters":{"id":1385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1384,"mutability":"mutable","name":"admin","nameLocation":"1638:5:9","nodeType":"VariableDeclaration","scope":1386,"src":"1630:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1383,"name":"address","nodeType":"ElementaryTypeName","src":"1630:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1629:15:9"},"src":"1604:41:9"},{"documentation":{"id":1387,"nodeType":"StructuredDocumentation","src":"1651:61:9","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":1391,"name":"ERC1967InvalidBeacon","nameLocation":"1723:20:9","nodeType":"ErrorDefinition","parameters":{"id":1390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1389,"mutability":"mutable","name":"beacon","nameLocation":"1752:6:9","nodeType":"VariableDeclaration","scope":1391,"src":"1744:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1388,"name":"address","nodeType":"ElementaryTypeName","src":"1744:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1743:16:9"},"src":"1717:43:9"},{"documentation":{"id":1392,"nodeType":"StructuredDocumentation","src":"1766:82:9","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":1394,"name":"ERC1967NonPayable","nameLocation":"1859:17:9","nodeType":"ErrorDefinition","parameters":{"id":1393,"nodeType":"ParameterList","parameters":[],"src":"1876:2:9"},"src":"1853:26:9"},{"body":{"id":1406,"nodeType":"Block","src":"2018:77:9","statements":[{"expression":{"expression":{"arguments":[{"id":1402,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"2062:19:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1400,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"2035:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2047:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"2035:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2035:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2083:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"2035:53:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1399,"id":1405,"nodeType":"Return","src":"2028:60:9"}]},"documentation":{"id":1395,"nodeType":"StructuredDocumentation","src":"1885:67:9","text":" @dev Returns the current implementation address."},"id":1407,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1966:17:9","nodeType":"FunctionDefinition","parameters":{"id":1396,"nodeType":"ParameterList","parameters":[],"src":"1983:2:9"},"returnParameters":{"id":1399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1407,"src":"2009:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1397,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2008:9:9"},"scope":1649,"src":"1957:138:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1433,"nodeType":"Block","src":"2249:218:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1413,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"2263:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2281:4:9","memberName":"code","nodeType":"MemberAccess","src":"2263:22:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2286:6:9","memberName":"length","nodeType":"MemberAccess","src":"2263:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2263:34:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1423,"nodeType":"IfStatement","src":"2259:119:9","trueBody":{"id":1422,"nodeType":"Block","src":"2299:79:9","statements":[{"errorCall":{"arguments":[{"id":1419,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"2349:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1418,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"2320:28:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1421,"nodeType":"RevertStatement","src":"2313:54:9"}]}},{"expression":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1427,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1376,"src":"2414:19:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1424,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"2387:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2399:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"2387:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2387:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2435:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"2387:53:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1430,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1410,"src":"2443:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2387:73:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1432,"nodeType":"ExpressionStatement","src":"2387:73:9"}]},"documentation":{"id":1408,"nodeType":"StructuredDocumentation","src":"2101:80:9","text":" @dev Stores a new address in the EIP1967 implementation slot."},"id":1434,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"2195:18:9","nodeType":"FunctionDefinition","parameters":{"id":1411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"newImplementation","nameLocation":"2222:17:9","nodeType":"VariableDeclaration","scope":1434,"src":"2214:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1409,"name":"address","nodeType":"ElementaryTypeName","src":"2214:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2213:27:9"},"returnParameters":{"id":1412,"nodeType":"ParameterList","parameters":[],"src":"2249:0:9"},"scope":1649,"src":"2186:281:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1467,"nodeType":"Block","src":"2860:254:9","statements":[{"expression":{"arguments":[{"id":1443,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"2889:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1442,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"2870:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2870:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1445,"nodeType":"ExpressionStatement","src":"2870:37:9"},{"eventCall":{"arguments":[{"id":1447,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"2931:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1446,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1360,"src":"2922:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2922:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1449,"nodeType":"EmitStatement","src":"2917:32:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1450,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1439,"src":"2964:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2969:6:9","memberName":"length","nodeType":"MemberAccess","src":"2964:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2978:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2964:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1465,"nodeType":"Block","src":"3065:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1462,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"3079:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3079:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1464,"nodeType":"ExpressionStatement","src":"3079:18:9"}]},"id":1466,"nodeType":"IfStatement","src":"2960:148:9","trueBody":{"id":1461,"nodeType":"Block","src":"2981:78:9","statements":[{"expression":{"arguments":[{"id":1457,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"3024:17:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1458,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1439,"src":"3043:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1454,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"2995:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1912_$","typeString":"type(library Address)"}},"id":1456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3003:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"2995:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1460,"nodeType":"ExpressionStatement","src":"2995:53:9"}]}}]},"documentation":{"id":1435,"nodeType":"StructuredDocumentation","src":"2473:301:9","text":" @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event."},"id":1468,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2788:16:9","nodeType":"FunctionDefinition","parameters":{"id":1440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1437,"mutability":"mutable","name":"newImplementation","nameLocation":"2813:17:9","nodeType":"VariableDeclaration","scope":1468,"src":"2805:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1436,"name":"address","nodeType":"ElementaryTypeName","src":"2805:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1439,"mutability":"mutable","name":"data","nameLocation":"2845:4:9","nodeType":"VariableDeclaration","scope":1468,"src":"2832:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1438,"name":"bytes","nodeType":"ElementaryTypeName","src":"2832:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2804:46:9"},"returnParameters":{"id":1441,"nodeType":"ParameterList","parameters":[],"src":"2860:0:9"},"scope":1649,"src":"2779:335:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1469,"nodeType":"StructuredDocumentation","src":"3120:145:9","text":" @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1."},"id":1472,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"3361:10:9","nodeType":"VariableDeclaration","scope":1649,"src":"3335:105:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1470,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3335:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":1471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3374:66:9","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":1484,"nodeType":"Block","src":"3844:68:9","statements":[{"expression":{"expression":{"arguments":[{"id":1480,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"3888:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1478,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"3861:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3873:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"3861:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1482,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3900:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"3861:44:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1477,"id":1483,"nodeType":"Return","src":"3854:51:9"}]},"documentation":{"id":1473,"nodeType":"StructuredDocumentation","src":"3447:340:9","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":1485,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3801:8:9","nodeType":"FunctionDefinition","parameters":{"id":1474,"nodeType":"ParameterList","parameters":[],"src":"3809:2:9"},"returnParameters":{"id":1477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"3835:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1475,"name":"address","nodeType":"ElementaryTypeName","src":"3835:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3834:9:9"},"scope":1649,"src":"3792:120:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1515,"nodeType":"Block","src":"4039:172:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1491,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"4053:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4073:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4065:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1492,"name":"address","nodeType":"ElementaryTypeName","src":"4065:7:9","typeDescriptions":{}}},"id":1495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4053:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1505,"nodeType":"IfStatement","src":"4049:91:9","trueBody":{"id":1504,"nodeType":"Block","src":"4077:63:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":1500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4126:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4118:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1498,"name":"address","nodeType":"ElementaryTypeName","src":"4118:7:9","typeDescriptions":{}}},"id":1501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1497,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"4098:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4098:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1503,"nodeType":"RevertStatement","src":"4091:38:9"}]}},{"expression":{"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1509,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1472,"src":"4176:10:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1506,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"4149:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4161:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"4149:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4149:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1511,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4188:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"4149:44:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1512,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"4196:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4149:55:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1514,"nodeType":"ExpressionStatement","src":"4149:55:9"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"3918:71:9","text":" @dev Stores a new address in the EIP1967 admin slot."},"id":1516,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"4003:9:9","nodeType":"FunctionDefinition","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"newAdmin","nameLocation":"4021:8:9","nodeType":"VariableDeclaration","scope":1516,"src":"4013:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"4013:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4012:18:9"},"returnParameters":{"id":1490,"nodeType":"ParameterList","parameters":[],"src":"4039:0:9"},"scope":1649,"src":"3994:217:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1532,"nodeType":"Block","src":"4379:85:9","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1523,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"4407:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4407:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1525,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1519,"src":"4419:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1522,"name":"AdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1367,"src":"4394:12:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4394:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1527,"nodeType":"EmitStatement","src":"4389:39:9"},{"expression":{"arguments":[{"id":1529,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1519,"src":"4448:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1528,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"4438:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4438:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1531,"nodeType":"ExpressionStatement","src":"4438:19:9"}]},"documentation":{"id":1517,"nodeType":"StructuredDocumentation","src":"4217:109:9","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":1533,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"4340:11:9","nodeType":"FunctionDefinition","parameters":{"id":1520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1519,"mutability":"mutable","name":"newAdmin","nameLocation":"4360:8:9","nodeType":"VariableDeclaration","scope":1533,"src":"4352:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1518,"name":"address","nodeType":"ElementaryTypeName","src":"4352:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4351:18:9"},"returnParameters":{"id":1521,"nodeType":"ParameterList","parameters":[],"src":"4379:0:9"},"scope":1649,"src":"4331:133:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":1534,"nodeType":"StructuredDocumentation","src":"4470:201:9","text":" @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1."},"id":1537,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4767:11:9","nodeType":"VariableDeclaration","scope":1649,"src":"4741:106:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1535,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4741:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":1536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4781:66:9","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":1549,"nodeType":"Block","src":"4963:69:9","statements":[{"expression":{"expression":{"arguments":[{"id":1545,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"5007:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1543,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"4980:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4992:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"4980:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5020:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"4980:45:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1542,"id":1548,"nodeType":"Return","src":"4973:52:9"}]},"documentation":{"id":1538,"nodeType":"StructuredDocumentation","src":"4854:51:9","text":" @dev Returns the current beacon."},"id":1550,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4919:9:9","nodeType":"FunctionDefinition","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[],"src":"4928:2:9"},"returnParameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1550,"src":"4954:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1540,"name":"address","nodeType":"ElementaryTypeName","src":"4954:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4953:9:9"},"scope":1649,"src":"4910:122:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1595,"nodeType":"Block","src":"5161:390:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1556,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"5175:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5185:4:9","memberName":"code","nodeType":"MemberAccess","src":"5175:14:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5190:6:9","memberName":"length","nodeType":"MemberAccess","src":"5175:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5200:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5175:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1566,"nodeType":"IfStatement","src":"5171:95:9","trueBody":{"id":1565,"nodeType":"Block","src":"5203:63:9","statements":[{"errorCall":{"arguments":[{"id":1562,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"5245:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1561,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1391,"src":"5224:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5224:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1564,"nodeType":"RevertStatement","src":"5217:38:9"}]}},{"expression":{"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1570,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"5303:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1567,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"5276:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2022_$","typeString":"type(library StorageSlot)"}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5288:14:9","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1944,"src":"5276:26:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1918_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5276:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5316:5:9","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1917,"src":"5276:45:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1573,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"5324:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5276:57:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1575,"nodeType":"ExpressionStatement","src":"5276:57:9"},{"assignments":[1577],"declarations":[{"constant":false,"id":1577,"mutability":"mutable","name":"beaconImplementation","nameLocation":"5352:20:9","nodeType":"VariableDeclaration","scope":1595,"src":"5344:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1576,"name":"address","nodeType":"ElementaryTypeName","src":"5344:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1583,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1579,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1553,"src":"5383:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1578,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"5375:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1659_$","typeString":"type(contract IBeacon)"}},"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1659","typeString":"contract IBeacon"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5394:14:9","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1658,"src":"5375:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5375:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5344:66:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1584,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"5424:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5445:4:9","memberName":"code","nodeType":"MemberAccess","src":"5424:25:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5450:6:9","memberName":"length","nodeType":"MemberAccess","src":"5424:32:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5460:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5424:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1594,"nodeType":"IfStatement","src":"5420:125:9","trueBody":{"id":1593,"nodeType":"Block","src":"5463:82:9","statements":[{"errorCall":{"arguments":[{"id":1590,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1577,"src":"5513:20:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1589,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1381,"src":"5484:28:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5484:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1592,"nodeType":"RevertStatement","src":"5477:57:9"}]}}]},"documentation":{"id":1551,"nodeType":"StructuredDocumentation","src":"5038:71:9","text":" @dev Stores a new beacon in the EIP1967 beacon slot."},"id":1596,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"5123:10:9","nodeType":"FunctionDefinition","parameters":{"id":1554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1553,"mutability":"mutable","name":"newBeacon","nameLocation":"5142:9:9","nodeType":"VariableDeclaration","scope":1596,"src":"5134:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1552,"name":"address","nodeType":"ElementaryTypeName","src":"5134:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5133:19:9"},"returnParameters":{"id":1555,"nodeType":"ParameterList","parameters":[],"src":"5161:0:9"},"scope":1649,"src":"5114:437:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1633,"nodeType":"Block","src":"6155:254:9","statements":[{"expression":{"arguments":[{"id":1605,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"6176:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1604,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1596,"src":"6165:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1607,"nodeType":"ExpressionStatement","src":"6165:21:9"},{"eventCall":{"arguments":[{"id":1609,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"6216:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1608,"name":"BeaconUpgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1372,"src":"6201:14:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6201:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1611,"nodeType":"EmitStatement","src":"6196:30:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1612,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"6241:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6246:6:9","memberName":"length","nodeType":"MemberAccess","src":"6241:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6255:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6241:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1631,"nodeType":"Block","src":"6360:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1628,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"6374:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6374:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1630,"nodeType":"ExpressionStatement","src":"6374:18:9"}]},"id":1632,"nodeType":"IfStatement","src":"6237:166:9","trueBody":{"id":1627,"nodeType":"Block","src":"6258:96:9","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1620,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1599,"src":"6309:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1619,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"6301:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1659_$","typeString":"type(contract IBeacon)"}},"id":1621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1659","typeString":"contract IBeacon"}},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6320:14:9","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1658,"src":"6301:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6301:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1624,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1601,"src":"6338:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1616,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1912,"src":"6272:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1912_$","typeString":"type(library Address)"}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6280:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1831,"src":"6272:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6272:71:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1626,"nodeType":"ExpressionStatement","src":"6272:71:9"}]}}]},"documentation":{"id":1597,"nodeType":"StructuredDocumentation","src":"5557:514:9","text":" @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency."},"id":1634,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"6085:22:9","nodeType":"FunctionDefinition","parameters":{"id":1602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1599,"mutability":"mutable","name":"newBeacon","nameLocation":"6116:9:9","nodeType":"VariableDeclaration","scope":1634,"src":"6108:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1598,"name":"address","nodeType":"ElementaryTypeName","src":"6108:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1601,"mutability":"mutable","name":"data","nameLocation":"6140:4:9","nodeType":"VariableDeclaration","scope":1634,"src":"6127:17:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1600,"name":"bytes","nodeType":"ElementaryTypeName","src":"6127:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6107:38:9"},"returnParameters":{"id":1603,"nodeType":"ParameterList","parameters":[],"src":"6155:0:9"},"scope":1649,"src":"6076:333:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1647,"nodeType":"Block","src":"6634:86:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1638,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6648:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6652:5:9","memberName":"value","nodeType":"MemberAccess","src":"6648:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6648:13:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1646,"nodeType":"IfStatement","src":"6644:70:9","trueBody":{"id":1645,"nodeType":"Block","src":"6663:51:9","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1642,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"6684:17:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6684:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1644,"nodeType":"RevertStatement","src":"6677:26:9"}]}}]},"documentation":{"id":1635,"nodeType":"StructuredDocumentation","src":"6415:178:9","text":" @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call."},"id":1648,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6607:16:9","nodeType":"FunctionDefinition","parameters":{"id":1636,"nodeType":"ParameterList","parameters":[],"src":"6623:2:9"},"returnParameters":{"id":1637,"nodeType":"ParameterList","parameters":[],"src":"6634:0:9"},"scope":1649,"src":"6598:122:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1650,"src":"449:6273:9","usedErrors":[1381,1386,1391,1394],"usedEvents":[1360,1367,1372]}],"src":"114:6609:9"},"id":9},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[1659]},"id":1660,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1651,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":1652,"nodeType":"StructuredDocumentation","src":"134:79:10","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":1659,"linearizedBaseContracts":[1659],"name":"IBeacon","nameLocation":"224:7:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1653,"nodeType":"StructuredDocumentation","src":"238:168:10","text":" @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract."},"functionSelector":"5c60da1b","id":1658,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:10","nodeType":"FunctionDefinition","parameters":{"id":1654,"nodeType":"ParameterList","parameters":[],"src":"434:2:10"},"returnParameters":{"id":1657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1658,"src":"460:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1655,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:10"},"scope":1659,"src":"411:58:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1660,"src":"214:257:10","usedErrors":[],"usedEvents":[]}],"src":"108:364:10"},"id":10},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[1912]},"id":1913,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1661,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1662,"nodeType":"StructuredDocumentation","src":"127:67:11","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1912,"linearizedBaseContracts":[1912],"name":"Address","nameLocation":"203:7:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1663,"nodeType":"StructuredDocumentation","src":"217:94:11","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cd786059","id":1667,"name":"AddressInsufficientBalance","nameLocation":"322:26:11","nodeType":"ErrorDefinition","parameters":{"id":1666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1665,"mutability":"mutable","name":"account","nameLocation":"357:7:11","nodeType":"VariableDeclaration","scope":1667,"src":"349:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1664,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"348:17:11"},"src":"316:50:11"},{"documentation":{"id":1668,"nodeType":"StructuredDocumentation","src":"372:75:11","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":1672,"name":"AddressEmptyCode","nameLocation":"458:16:11","nodeType":"ErrorDefinition","parameters":{"id":1671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"mutability":"mutable","name":"target","nameLocation":"483:6:11","nodeType":"VariableDeclaration","scope":1672,"src":"475:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1669,"name":"address","nodeType":"ElementaryTypeName","src":"475:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"474:16:11"},"src":"452:39:11"},{"documentation":{"id":1673,"nodeType":"StructuredDocumentation","src":"497:89:11","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"1425ea42","id":1675,"name":"FailedInnerCall","nameLocation":"597:15:11","nodeType":"ErrorDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[],"src":"612:2:11"},"src":"591:24:11"},{"body":{"id":1715,"nodeType":"Block","src":"1602:260:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1685,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1624:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}],"id":1684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1616:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1683,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:11","typeDescriptions":{}}},"id":1686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1630:7:11","memberName":"balance","nodeType":"MemberAccess","src":"1616:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1688,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1640:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1616:30:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1698,"nodeType":"IfStatement","src":"1612:109:11","trueBody":{"id":1697,"nodeType":"Block","src":"1648:73:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1693,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1704:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}],"id":1692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1696:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1691,"name":"address","nodeType":"ElementaryTypeName","src":"1696:7:11","typeDescriptions":{}}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1696:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1690,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"1669:26:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1669:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1696,"nodeType":"RevertStatement","src":"1662:48:11"}]}},{"assignments":[1700,null],"declarations":[{"constant":false,"id":1700,"mutability":"mutable","name":"success","nameLocation":"1737:7:11","nodeType":"VariableDeclaration","scope":1715,"src":"1732:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1699,"name":"bool","nodeType":"ElementaryTypeName","src":"1732:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1707,"initialValue":{"arguments":[{"hexValue":"","id":1705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1780: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":{"id":1701,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1678,"src":"1750:9:11","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1760:4:11","memberName":"call","nodeType":"MemberAccess","src":"1750:14: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":1704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1703,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1772:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1750:29: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":1706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1750:33:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1731:52:11"},{"condition":{"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1797:8:11","subExpression":{"id":1708,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1700,"src":"1798:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1714,"nodeType":"IfStatement","src":"1793:63:11","trueBody":{"id":1713,"nodeType":"Block","src":"1807:49:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1710,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1828:15:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1828:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1712,"nodeType":"RevertStatement","src":"1821:24:11"}]}}]},"documentation":{"id":1676,"nodeType":"StructuredDocumentation","src":"621:905:11","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1716,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1540:9:11","nodeType":"FunctionDefinition","parameters":{"id":1681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1678,"mutability":"mutable","name":"recipient","nameLocation":"1566:9:11","nodeType":"VariableDeclaration","scope":1716,"src":"1550:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1677,"name":"address","nodeType":"ElementaryTypeName","src":"1550:15:11","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1680,"mutability":"mutable","name":"amount","nameLocation":"1585:6:11","nodeType":"VariableDeclaration","scope":1716,"src":"1577:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1679,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:43:11"},"returnParameters":{"id":1682,"nodeType":"ParameterList","parameters":[],"src":"1602:0:11"},"scope":1912,"src":"1531:331:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1732,"nodeType":"Block","src":"2794:62:11","statements":[{"expression":{"arguments":[{"id":1727,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"2833:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1728,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1721,"src":"2841:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2847:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1726,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"2811:21:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256) returns (bytes memory)"}},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1725,"id":1731,"nodeType":"Return","src":"2804:45:11"}]},"documentation":{"id":1717,"nodeType":"StructuredDocumentation","src":"1868:832:11","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {FailedInnerCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert."},"id":1733,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2714:12:11","nodeType":"FunctionDefinition","parameters":{"id":1722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1719,"mutability":"mutable","name":"target","nameLocation":"2735:6:11","nodeType":"VariableDeclaration","scope":1733,"src":"2727:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1718,"name":"address","nodeType":"ElementaryTypeName","src":"2727:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1721,"mutability":"mutable","name":"data","nameLocation":"2756:4:11","nodeType":"VariableDeclaration","scope":1733,"src":"2743:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1720,"name":"bytes","nodeType":"ElementaryTypeName","src":"2743:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2726:35:11"},"returnParameters":{"id":1725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1733,"src":"2780:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1723,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2779:14:11"},"scope":1912,"src":"2705:151:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1778,"nodeType":"Block","src":"3293:279:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1747,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3315:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}],"id":1746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3307:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1745,"name":"address","nodeType":"ElementaryTypeName","src":"3307:7:11","typeDescriptions":{}}},"id":1748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3307:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3321:7:11","memberName":"balance","nodeType":"MemberAccess","src":"3307:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1750,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1740,"src":"3331:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3307:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1760,"nodeType":"IfStatement","src":"3303:108:11","trueBody":{"id":1759,"nodeType":"Block","src":"3338:73:11","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":1755,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3394:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1912","typeString":"library Address"}],"id":1754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3386:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1753,"name":"address","nodeType":"ElementaryTypeName","src":"3386:7:11","typeDescriptions":{}}},"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3386:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1752,"name":"AddressInsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"3359:26:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1758,"nodeType":"RevertStatement","src":"3352:48:11"}]}},{"assignments":[1762,1764],"declarations":[{"constant":false,"id":1762,"mutability":"mutable","name":"success","nameLocation":"3426:7:11","nodeType":"VariableDeclaration","scope":1778,"src":"3421:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1761,"name":"bool","nodeType":"ElementaryTypeName","src":"3421:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1764,"mutability":"mutable","name":"returndata","nameLocation":"3448:10:11","nodeType":"VariableDeclaration","scope":1778,"src":"3435:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1763,"name":"bytes","nodeType":"ElementaryTypeName","src":"3435:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1771,"initialValue":{"arguments":[{"id":1769,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1738,"src":"3488:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1765,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3462:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3469:4:11","memberName":"call","nodeType":"MemberAccess","src":"3462:11: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":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1767,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1740,"src":"3481:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3462:25: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":1770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3462:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3420:73:11"},{"expression":{"arguments":[{"id":1773,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3537:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1774,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"3545:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1775,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"3554:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1772,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"3510:26:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3510:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1744,"id":1777,"nodeType":"Return","src":"3503:62:11"}]},"documentation":{"id":1734,"nodeType":"StructuredDocumentation","src":"2862:313:11","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`."},"id":1779,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"3189:21:11","nodeType":"FunctionDefinition","parameters":{"id":1741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1736,"mutability":"mutable","name":"target","nameLocation":"3219:6:11","nodeType":"VariableDeclaration","scope":1779,"src":"3211:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1735,"name":"address","nodeType":"ElementaryTypeName","src":"3211:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1738,"mutability":"mutable","name":"data","nameLocation":"3240:4:11","nodeType":"VariableDeclaration","scope":1779,"src":"3227:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1737,"name":"bytes","nodeType":"ElementaryTypeName","src":"3227:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1740,"mutability":"mutable","name":"value","nameLocation":"3254:5:11","nodeType":"VariableDeclaration","scope":1779,"src":"3246:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1739,"name":"uint256","nodeType":"ElementaryTypeName","src":"3246:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3210:50:11"},"returnParameters":{"id":1744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1779,"src":"3279:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1742,"name":"bytes","nodeType":"ElementaryTypeName","src":"3279:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3278:14:11"},"scope":1912,"src":"3180:392:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1804,"nodeType":"Block","src":"3811:154:11","statements":[{"assignments":[1790,1792],"declarations":[{"constant":false,"id":1790,"mutability":"mutable","name":"success","nameLocation":"3827:7:11","nodeType":"VariableDeclaration","scope":1804,"src":"3822:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1789,"name":"bool","nodeType":"ElementaryTypeName","src":"3822:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1792,"mutability":"mutable","name":"returndata","nameLocation":"3849:10:11","nodeType":"VariableDeclaration","scope":1804,"src":"3836:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1791,"name":"bytes","nodeType":"ElementaryTypeName","src":"3836:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1797,"initialValue":{"arguments":[{"id":1795,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"3881:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1793,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"3863:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:10:11","memberName":"staticcall","nodeType":"MemberAccess","src":"3863:17:11","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3863:23:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3821:65:11"},{"expression":{"arguments":[{"id":1799,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"3930:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1800,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"3938:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1801,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"3947:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1798,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"3903:26:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3903:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1788,"id":1803,"nodeType":"Return","src":"3896:62:11"}]},"documentation":{"id":1780,"nodeType":"StructuredDocumentation","src":"3578:128:11","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":1805,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3720:18:11","nodeType":"FunctionDefinition","parameters":{"id":1785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1782,"mutability":"mutable","name":"target","nameLocation":"3747:6:11","nodeType":"VariableDeclaration","scope":1805,"src":"3739:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1781,"name":"address","nodeType":"ElementaryTypeName","src":"3739:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1784,"mutability":"mutable","name":"data","nameLocation":"3768:4:11","nodeType":"VariableDeclaration","scope":1805,"src":"3755:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1783,"name":"bytes","nodeType":"ElementaryTypeName","src":"3755:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3738:35:11"},"returnParameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1805,"src":"3797:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1786,"name":"bytes","nodeType":"ElementaryTypeName","src":"3797:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3796:14:11"},"scope":1912,"src":"3711:254:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1830,"nodeType":"Block","src":"4203:156:11","statements":[{"assignments":[1816,1818],"declarations":[{"constant":false,"id":1816,"mutability":"mutable","name":"success","nameLocation":"4219:7:11","nodeType":"VariableDeclaration","scope":1830,"src":"4214:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1815,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1818,"mutability":"mutable","name":"returndata","nameLocation":"4241:10:11","nodeType":"VariableDeclaration","scope":1830,"src":"4228:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1817,"name":"bytes","nodeType":"ElementaryTypeName","src":"4228:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1823,"initialValue":{"arguments":[{"id":1821,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"4275:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1819,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"4255:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4262:12:11","memberName":"delegatecall","nodeType":"MemberAccess","src":"4255:19:11","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4255:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4213:67:11"},{"expression":{"arguments":[{"id":1825,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1808,"src":"4324:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1826,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1816,"src":"4332:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1827,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1818,"src":"4341:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1824,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"4297:26:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:55:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1814,"id":1829,"nodeType":"Return","src":"4290:62:11"}]},"documentation":{"id":1806,"nodeType":"StructuredDocumentation","src":"3971:130:11","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":1831,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"4115:20:11","nodeType":"FunctionDefinition","parameters":{"id":1811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1808,"mutability":"mutable","name":"target","nameLocation":"4144:6:11","nodeType":"VariableDeclaration","scope":1831,"src":"4136:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1807,"name":"address","nodeType":"ElementaryTypeName","src":"4136:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1810,"mutability":"mutable","name":"data","nameLocation":"4165:4:11","nodeType":"VariableDeclaration","scope":1831,"src":"4152:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1809,"name":"bytes","nodeType":"ElementaryTypeName","src":"4152:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4135:35:11"},"returnParameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1813,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1831,"src":"4189:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1812,"name":"bytes","nodeType":"ElementaryTypeName","src":"4189:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4188:14:11"},"scope":1912,"src":"4106:253:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1870,"nodeType":"Block","src":"4783:424:11","statements":[{"condition":{"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4797:8:11","subExpression":{"id":1843,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1836,"src":"4798:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1868,"nodeType":"Block","src":"4857:344:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1850,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"5045:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5056:6:11","memberName":"length","nodeType":"MemberAccess","src":"5045:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5045:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1854,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"5071:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5078:4:11","memberName":"code","nodeType":"MemberAccess","src":"5071:11:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5083:6:11","memberName":"length","nodeType":"MemberAccess","src":"5071:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5093:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5071:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5045:49:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1865,"nodeType":"IfStatement","src":"5041:119:11","trueBody":{"id":1864,"nodeType":"Block","src":"5096:64:11","statements":[{"errorCall":{"arguments":[{"id":1861,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"5138:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1860,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"5121:16:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$__$","typeString":"function (address) pure"}},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1863,"nodeType":"RevertStatement","src":"5114:31:11"}]}},{"expression":{"id":1866,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"5180:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1842,"id":1867,"nodeType":"Return","src":"5173:17:11"}]},"id":1869,"nodeType":"IfStatement","src":"4793:408:11","trueBody":{"id":1849,"nodeType":"Block","src":"4807:44:11","statements":[{"expression":{"arguments":[{"id":1846,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"4829:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1845,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1911,"src":"4821:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4821:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1848,"nodeType":"ExpressionStatement","src":"4821:19:11"}]}}]},"documentation":{"id":1832,"nodeType":"StructuredDocumentation","src":"4365:255:11","text":" @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an\n unsuccessful call."},"id":1871,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4634:26:11","nodeType":"FunctionDefinition","parameters":{"id":1839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1834,"mutability":"mutable","name":"target","nameLocation":"4678:6:11","nodeType":"VariableDeclaration","scope":1871,"src":"4670:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1833,"name":"address","nodeType":"ElementaryTypeName","src":"4670:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1836,"mutability":"mutable","name":"success","nameLocation":"4699:7:11","nodeType":"VariableDeclaration","scope":1871,"src":"4694:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1835,"name":"bool","nodeType":"ElementaryTypeName","src":"4694:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1838,"mutability":"mutable","name":"returndata","nameLocation":"4729:10:11","nodeType":"VariableDeclaration","scope":1871,"src":"4716:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1837,"name":"bytes","nodeType":"ElementaryTypeName","src":"4716:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4660:85:11"},"returnParameters":{"id":1842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1841,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1871,"src":"4769:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1840,"name":"bytes","nodeType":"ElementaryTypeName","src":"4769:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4768:14:11"},"scope":1912,"src":"4625:582:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1892,"nodeType":"Block","src":"5509:122:11","statements":[{"condition":{"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5523:8:11","subExpression":{"id":1881,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1874,"src":"5524:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1890,"nodeType":"Block","src":"5583:42:11","statements":[{"expression":{"id":1888,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"5604:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1880,"id":1889,"nodeType":"Return","src":"5597:17:11"}]},"id":1891,"nodeType":"IfStatement","src":"5519:106:11","trueBody":{"id":1887,"nodeType":"Block","src":"5533:44:11","statements":[{"expression":{"arguments":[{"id":1884,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1876,"src":"5555:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1883,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1911,"src":"5547:7:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5547:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1886,"nodeType":"ExpressionStatement","src":"5547:19:11"}]}}]},"documentation":{"id":1872,"nodeType":"StructuredDocumentation","src":"5213:189:11","text":" @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {FailedInnerCall} error."},"id":1893,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5416:16:11","nodeType":"FunctionDefinition","parameters":{"id":1877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1874,"mutability":"mutable","name":"success","nameLocation":"5438:7:11","nodeType":"VariableDeclaration","scope":1893,"src":"5433:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1873,"name":"bool","nodeType":"ElementaryTypeName","src":"5433:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1876,"mutability":"mutable","name":"returndata","nameLocation":"5460:10:11","nodeType":"VariableDeclaration","scope":1893,"src":"5447:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1875,"name":"bytes","nodeType":"ElementaryTypeName","src":"5447:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5432:39:11"},"returnParameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1893,"src":"5495:12:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1878,"name":"bytes","nodeType":"ElementaryTypeName","src":"5495:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5494:14:11"},"scope":1912,"src":"5407:224:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1910,"nodeType":"Block","src":"5798:461:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1899,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"5874:10:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5885:6:11","memberName":"length","nodeType":"MemberAccess","src":"5874:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5874:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1908,"nodeType":"Block","src":"6204:49:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1905,"name":"FailedInnerCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"6225:15:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6225:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1907,"nodeType":"RevertStatement","src":"6218:24:11"}]},"id":1909,"nodeType":"IfStatement","src":"5870:383:11","trueBody":{"id":1904,"nodeType":"Block","src":"5897:301:11","statements":[{"AST":{"nodeType":"YulBlock","src":"6055:133:11","statements":[{"nodeType":"YulVariableDeclaration","src":"6073:40:11","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"6102:10:11"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6096:5:11"},"nodeType":"YulFunctionCall","src":"6096:17:11"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"6077:15:11","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6141:2:11","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"6145:10:11"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6137:3:11"},"nodeType":"YulFunctionCall","src":"6137:19:11"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"6158:15:11"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6130:6:11"},"nodeType":"YulFunctionCall","src":"6130:44:11"},"nodeType":"YulExpressionStatement","src":"6130:44:11"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1896,"isOffset":false,"isSlot":false,"src":"6102:10:11","valueSize":1},{"declaration":1896,"isOffset":false,"isSlot":false,"src":"6145:10:11","valueSize":1}],"id":1903,"nodeType":"InlineAssembly","src":"6046:142:11"}]}}]},"documentation":{"id":1894,"nodeType":"StructuredDocumentation","src":"5637:101:11","text":" @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}."},"id":1911,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5752:7:11","nodeType":"FunctionDefinition","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1896,"mutability":"mutable","name":"returndata","nameLocation":"5773:10:11","nodeType":"VariableDeclaration","scope":1911,"src":"5760:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1895,"name":"bytes","nodeType":"ElementaryTypeName","src":"5760:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5759:25:11"},"returnParameters":{"id":1898,"nodeType":"ParameterList","parameters":[],"src":"5798:0:11"},"scope":1912,"src":"5743:516:11","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1913,"src":"195:6066:11","usedErrors":[1667,1672,1675],"usedEvents":[]}],"src":"101:6161:11"},"id":11},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[2022]},"id":2023,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1914,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":1915,"nodeType":"StructuredDocumentation","src":"219:1025:12","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC1967 implementation slot:\n ```solidity\n contract ERC1967 {\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```"},"fullyImplemented":true,"id":2022,"linearizedBaseContracts":[2022],"name":"StorageSlot","nameLocation":"1253:11:12","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":1918,"members":[{"constant":false,"id":1917,"mutability":"mutable","name":"value","nameLocation":"1308:5:12","nodeType":"VariableDeclaration","scope":1918,"src":"1300:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1916,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1278:11:12","nodeType":"StructDefinition","scope":2022,"src":"1271:49:12","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":1921,"members":[{"constant":false,"id":1920,"mutability":"mutable","name":"value","nameLocation":"1360:5:12","nodeType":"VariableDeclaration","scope":1921,"src":"1355:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1919,"name":"bool","nodeType":"ElementaryTypeName","src":"1355:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1333:11:12","nodeType":"StructDefinition","scope":2022,"src":"1326:46:12","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":1924,"members":[{"constant":false,"id":1923,"mutability":"mutable","name":"value","nameLocation":"1415:5:12","nodeType":"VariableDeclaration","scope":1924,"src":"1407:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1922,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1407:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1385:11:12","nodeType":"StructDefinition","scope":2022,"src":"1378:49:12","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":1927,"members":[{"constant":false,"id":1926,"mutability":"mutable","name":"value","nameLocation":"1470:5:12","nodeType":"VariableDeclaration","scope":1927,"src":"1462:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1440:11:12","nodeType":"StructDefinition","scope":2022,"src":"1433:49:12","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":1930,"members":[{"constant":false,"id":1929,"mutability":"mutable","name":"value","nameLocation":"1523:5:12","nodeType":"VariableDeclaration","scope":1930,"src":"1516:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1928,"name":"string","nodeType":"ElementaryTypeName","src":"1516:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1495:10:12","nodeType":"StructDefinition","scope":2022,"src":"1488:47:12","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":1933,"members":[{"constant":false,"id":1932,"mutability":"mutable","name":"value","nameLocation":"1574:5:12","nodeType":"VariableDeclaration","scope":1933,"src":"1568:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1931,"name":"bytes","nodeType":"ElementaryTypeName","src":"1568:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1548:9:12","nodeType":"StructDefinition","scope":2022,"src":"1541:45:12","visibility":"public"},{"body":{"id":1943,"nodeType":"Block","src":"1768:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"1830:38:12","statements":[{"nodeType":"YulAssignment","src":"1844:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"1854:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"1844:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1940,"isOffset":false,"isSlot":true,"src":"1844:6:12","suffix":"slot","valueSize":1},{"declaration":1936,"isOffset":false,"isSlot":false,"src":"1854:4:12","valueSize":1}],"id":1942,"nodeType":"InlineAssembly","src":"1821:47:12"}]},"documentation":{"id":1934,"nodeType":"StructuredDocumentation","src":"1592:87:12","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":1944,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1693:14:12","nodeType":"FunctionDefinition","parameters":{"id":1937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1936,"mutability":"mutable","name":"slot","nameLocation":"1716:4:12","nodeType":"VariableDeclaration","scope":1944,"src":"1708:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1935,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1708:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1707:14:12"},"returnParameters":{"id":1941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1940,"mutability":"mutable","name":"r","nameLocation":"1765:1:12","nodeType":"VariableDeclaration","scope":1944,"src":"1745:21:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":1939,"nodeType":"UserDefinedTypeName","pathNode":{"id":1938,"name":"AddressSlot","nameLocations":["1745:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":1918,"src":"1745:11:12"},"referencedDeclaration":1918,"src":"1745:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1918_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1744:23:12"},"scope":2022,"src":"1684:190:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1954,"nodeType":"Block","src":"2056:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"2118:38:12","statements":[{"nodeType":"YulAssignment","src":"2132:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"2142:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2132:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1951,"isOffset":false,"isSlot":true,"src":"2132:6:12","suffix":"slot","valueSize":1},{"declaration":1947,"isOffset":false,"isSlot":false,"src":"2142:4:12","valueSize":1}],"id":1953,"nodeType":"InlineAssembly","src":"2109:47:12"}]},"documentation":{"id":1945,"nodeType":"StructuredDocumentation","src":"1880:87:12","text":" @dev Returns an `BooleanSlot` with member `value` located at `slot`."},"id":1955,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"1981:14:12","nodeType":"FunctionDefinition","parameters":{"id":1948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1947,"mutability":"mutable","name":"slot","nameLocation":"2004:4:12","nodeType":"VariableDeclaration","scope":1955,"src":"1996:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1946,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1996:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1995:14:12"},"returnParameters":{"id":1952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1951,"mutability":"mutable","name":"r","nameLocation":"2053:1:12","nodeType":"VariableDeclaration","scope":1955,"src":"2033:21:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1921_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":1950,"nodeType":"UserDefinedTypeName","pathNode":{"id":1949,"name":"BooleanSlot","nameLocations":["2033:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":1921,"src":"2033:11:12"},"referencedDeclaration":1921,"src":"2033:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1921_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2032:23:12"},"scope":2022,"src":"1972:190:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1965,"nodeType":"Block","src":"2344:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"2406:38:12","statements":[{"nodeType":"YulAssignment","src":"2420:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"2430:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2420:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1962,"isOffset":false,"isSlot":true,"src":"2420:6:12","suffix":"slot","valueSize":1},{"declaration":1958,"isOffset":false,"isSlot":false,"src":"2430:4:12","valueSize":1}],"id":1964,"nodeType":"InlineAssembly","src":"2397:47:12"}]},"documentation":{"id":1956,"nodeType":"StructuredDocumentation","src":"2168:87:12","text":" @dev Returns an `Bytes32Slot` with member `value` located at `slot`."},"id":1966,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2269:14:12","nodeType":"FunctionDefinition","parameters":{"id":1959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1958,"mutability":"mutable","name":"slot","nameLocation":"2292:4:12","nodeType":"VariableDeclaration","scope":1966,"src":"2284:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1957,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2283:14:12"},"returnParameters":{"id":1963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1962,"mutability":"mutable","name":"r","nameLocation":"2341:1:12","nodeType":"VariableDeclaration","scope":1966,"src":"2321:21:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1924_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":1961,"nodeType":"UserDefinedTypeName","pathNode":{"id":1960,"name":"Bytes32Slot","nameLocations":["2321:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":1924,"src":"2321:11:12"},"referencedDeclaration":1924,"src":"2321:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1924_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2320:23:12"},"scope":2022,"src":"2260:190:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1976,"nodeType":"Block","src":"2632:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"2694:38:12","statements":[{"nodeType":"YulAssignment","src":"2708:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"2718:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2708:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1973,"isOffset":false,"isSlot":true,"src":"2708:6:12","suffix":"slot","valueSize":1},{"declaration":1969,"isOffset":false,"isSlot":false,"src":"2718:4:12","valueSize":1}],"id":1975,"nodeType":"InlineAssembly","src":"2685:47:12"}]},"documentation":{"id":1967,"nodeType":"StructuredDocumentation","src":"2456:87:12","text":" @dev Returns an `Uint256Slot` with member `value` located at `slot`."},"id":1977,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2557:14:12","nodeType":"FunctionDefinition","parameters":{"id":1970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1969,"mutability":"mutable","name":"slot","nameLocation":"2580:4:12","nodeType":"VariableDeclaration","scope":1977,"src":"2572:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1968,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2572:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2571:14:12"},"returnParameters":{"id":1974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1973,"mutability":"mutable","name":"r","nameLocation":"2629:1:12","nodeType":"VariableDeclaration","scope":1977,"src":"2609:21:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1927_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":1972,"nodeType":"UserDefinedTypeName","pathNode":{"id":1971,"name":"Uint256Slot","nameLocations":["2609:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":1927,"src":"2609:11:12"},"referencedDeclaration":1927,"src":"2609:11:12","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1927_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2608:23:12"},"scope":2022,"src":"2548:190:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1987,"nodeType":"Block","src":"2917:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"2979:38:12","statements":[{"nodeType":"YulAssignment","src":"2993:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"3003:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"2993:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1984,"isOffset":false,"isSlot":true,"src":"2993:6:12","suffix":"slot","valueSize":1},{"declaration":1980,"isOffset":false,"isSlot":false,"src":"3003:4:12","valueSize":1}],"id":1986,"nodeType":"InlineAssembly","src":"2970:47:12"}]},"documentation":{"id":1978,"nodeType":"StructuredDocumentation","src":"2744:86:12","text":" @dev Returns an `StringSlot` with member `value` located at `slot`."},"id":1988,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"2844:13:12","nodeType":"FunctionDefinition","parameters":{"id":1981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1980,"mutability":"mutable","name":"slot","nameLocation":"2866:4:12","nodeType":"VariableDeclaration","scope":1988,"src":"2858:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2858:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2857:14:12"},"returnParameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"r","nameLocation":"2914:1:12","nodeType":"VariableDeclaration","scope":1988,"src":"2895:20:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1930_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1983,"nodeType":"UserDefinedTypeName","pathNode":{"id":1982,"name":"StringSlot","nameLocations":["2895:10:12"],"nodeType":"IdentifierPath","referencedDeclaration":1930,"src":"2895:10:12"},"referencedDeclaration":1930,"src":"2895:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1930_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"2894:22:12"},"scope":2022,"src":"2835:188:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1998,"nodeType":"Block","src":"3225:112:12","statements":[{"AST":{"nodeType":"YulBlock","src":"3287:44:12","statements":[{"nodeType":"YulAssignment","src":"3301:20:12","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3311:10:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3301:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1995,"isOffset":false,"isSlot":true,"src":"3301:6:12","suffix":"slot","valueSize":1},{"declaration":1991,"isOffset":false,"isSlot":true,"src":"3311:10:12","suffix":"slot","valueSize":1}],"id":1997,"nodeType":"InlineAssembly","src":"3278:53:12"}]},"documentation":{"id":1989,"nodeType":"StructuredDocumentation","src":"3029:101:12","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":1999,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3144:13:12","nodeType":"FunctionDefinition","parameters":{"id":1992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"store","nameLocation":"3173:5:12","nodeType":"VariableDeclaration","scope":1999,"src":"3158:20:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1990,"name":"string","nodeType":"ElementaryTypeName","src":"3158:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3157:22:12"},"returnParameters":{"id":1996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1995,"mutability":"mutable","name":"r","nameLocation":"3222:1:12","nodeType":"VariableDeclaration","scope":1999,"src":"3203:20:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1930_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1994,"nodeType":"UserDefinedTypeName","pathNode":{"id":1993,"name":"StringSlot","nameLocations":["3203:10:12"],"nodeType":"IdentifierPath","referencedDeclaration":1930,"src":"3203:10:12"},"referencedDeclaration":1930,"src":"3203:10:12","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1930_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3202:22:12"},"scope":2022,"src":"3135:202:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2009,"nodeType":"Block","src":"3513:106:12","statements":[{"AST":{"nodeType":"YulBlock","src":"3575:38:12","statements":[{"nodeType":"YulAssignment","src":"3589:14:12","value":{"name":"slot","nodeType":"YulIdentifier","src":"3599:4:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3589:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2006,"isOffset":false,"isSlot":true,"src":"3589:6:12","suffix":"slot","valueSize":1},{"declaration":2002,"isOffset":false,"isSlot":false,"src":"3599:4:12","valueSize":1}],"id":2008,"nodeType":"InlineAssembly","src":"3566:47:12"}]},"documentation":{"id":2000,"nodeType":"StructuredDocumentation","src":"3343:85:12","text":" @dev Returns an `BytesSlot` with member `value` located at `slot`."},"id":2010,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3442:12:12","nodeType":"FunctionDefinition","parameters":{"id":2003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2002,"mutability":"mutable","name":"slot","nameLocation":"3463:4:12","nodeType":"VariableDeclaration","scope":2010,"src":"3455:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2001,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3455:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3454:14:12"},"returnParameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2006,"mutability":"mutable","name":"r","nameLocation":"3510:1:12","nodeType":"VariableDeclaration","scope":2010,"src":"3492:19:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1933_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2005,"nodeType":"UserDefinedTypeName","pathNode":{"id":2004,"name":"BytesSlot","nameLocations":["3492:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":1933,"src":"3492:9:12"},"referencedDeclaration":1933,"src":"3492:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1933_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3491:21:12"},"scope":2022,"src":"3433:186:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2020,"nodeType":"Block","src":"3816:112:12","statements":[{"AST":{"nodeType":"YulBlock","src":"3878:44:12","statements":[{"nodeType":"YulAssignment","src":"3892:20:12","value":{"name":"store.slot","nodeType":"YulIdentifier","src":"3902:10:12"},"variableNames":[{"name":"r.slot","nodeType":"YulIdentifier","src":"3892:6:12"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2017,"isOffset":false,"isSlot":true,"src":"3892:6:12","suffix":"slot","valueSize":1},{"declaration":2013,"isOffset":false,"isSlot":true,"src":"3902:10:12","suffix":"slot","valueSize":1}],"id":2019,"nodeType":"InlineAssembly","src":"3869:53:12"}]},"documentation":{"id":2011,"nodeType":"StructuredDocumentation","src":"3625:99:12","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2021,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3738:12:12","nodeType":"FunctionDefinition","parameters":{"id":2014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2013,"mutability":"mutable","name":"store","nameLocation":"3765:5:12","nodeType":"VariableDeclaration","scope":2021,"src":"3751:19:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2012,"name":"bytes","nodeType":"ElementaryTypeName","src":"3751:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3750:21:12"},"returnParameters":{"id":2018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2017,"mutability":"mutable","name":"r","nameLocation":"3813:1:12","nodeType":"VariableDeclaration","scope":2021,"src":"3795:19:12","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1933_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2016,"nodeType":"UserDefinedTypeName","pathNode":{"id":2015,"name":"BytesSlot","nameLocations":["3795:9:12"],"nodeType":"IdentifierPath","referencedDeclaration":1933,"src":"3795:9:12"},"referencedDeclaration":1933,"src":"3795:9:12","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1933_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3794:21:12"},"scope":2022,"src":"3729:199:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2023,"src":"1245:2685:12","usedErrors":[],"usedEvents":[]}],"src":"193:3738:12"},"id":12},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[3765],"SignedMath":[3870],"Strings":[2277]},"id":2278,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2024,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:13"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":2026,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2278,"sourceUnit":3766,"src":"127:37:13","symbolAliases":[{"foreign":{"id":2025,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"135:4:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":2028,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2278,"sourceUnit":3871,"src":"165:49:13","symbolAliases":[{"foreign":{"id":2027,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"173:10:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":2029,"nodeType":"StructuredDocumentation","src":"216:34:13","text":" @dev String operations."},"fullyImplemented":true,"id":2277,"linearizedBaseContracts":[2277],"name":"Strings","nameLocation":"259:7:13","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2032,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"298:10:13","nodeType":"VariableDeclaration","scope":2277,"src":"273:56:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":2030,"name":"bytes16","nodeType":"ElementaryTypeName","src":"273:7:13","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":2031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:18:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":2035,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"358:14:13","nodeType":"VariableDeclaration","scope":2277,"src":"335:42:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2033,"name":"uint8","nodeType":"ElementaryTypeName","src":"335:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":2034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"375:2:13","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"documentation":{"id":2036,"nodeType":"StructuredDocumentation","src":"384:81:13","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":2042,"name":"StringsInsufficientHexLength","nameLocation":"476:28:13","nodeType":"ErrorDefinition","parameters":{"id":2041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2038,"mutability":"mutable","name":"value","nameLocation":"513:5:13","nodeType":"VariableDeclaration","scope":2042,"src":"505:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2037,"name":"uint256","nodeType":"ElementaryTypeName","src":"505:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2040,"mutability":"mutable","name":"length","nameLocation":"528:6:13","nodeType":"VariableDeclaration","scope":2042,"src":"520:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2039,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:31:13"},"src":"470:66:13"},{"body":{"id":2089,"nodeType":"Block","src":"708:627:13","statements":[{"id":2088,"nodeType":"UncheckedBlock","src":"718:611:13","statements":[{"assignments":[2051],"declarations":[{"constant":false,"id":2051,"mutability":"mutable","name":"length","nameLocation":"750:6:13","nodeType":"VariableDeclaration","scope":2088,"src":"742:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2050,"name":"uint256","nodeType":"ElementaryTypeName","src":"742:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2058,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2054,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"770:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2052,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"759:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3765_$","typeString":"type(library Math)"}},"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"764:5:13","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":3585,"src":"759:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"759:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"779:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"759:21:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"742:38:13"},{"assignments":[2060],"declarations":[{"constant":false,"id":2060,"mutability":"mutable","name":"buffer","nameLocation":"808:6:13","nodeType":"VariableDeclaration","scope":2088,"src":"794:20:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2059,"name":"string","nodeType":"ElementaryTypeName","src":"794:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2065,"initialValue":{"arguments":[{"id":2063,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"828:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"817:10:13","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":2061,"name":"string","nodeType":"ElementaryTypeName","src":"821:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"817:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"794:41:13"},{"assignments":[2067],"declarations":[{"constant":false,"id":2067,"mutability":"mutable","name":"ptr","nameLocation":"857:3:13","nodeType":"VariableDeclaration","scope":2088,"src":"849:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2066,"name":"uint256","nodeType":"ElementaryTypeName","src":"849:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2068,"nodeType":"VariableDeclarationStatement","src":"849:11:13"},{"AST":{"nodeType":"YulBlock","src":"930:67:13","statements":[{"nodeType":"YulAssignment","src":"948:35:13","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"959:6:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"971:2:13","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"975:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"967:3:13"},"nodeType":"YulFunctionCall","src":"967:15:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"955:3:13"},"nodeType":"YulFunctionCall","src":"955:28:13"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"948:3:13"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2060,"isOffset":false,"isSlot":false,"src":"959:6:13","valueSize":1},{"declaration":2051,"isOffset":false,"isSlot":false,"src":"975:6:13","valueSize":1},{"declaration":2067,"isOffset":false,"isSlot":false,"src":"948:3:13","valueSize":1}],"id":2069,"nodeType":"InlineAssembly","src":"921:76:13"},{"body":{"id":2084,"nodeType":"Block","src":"1023:269:13","statements":[{"expression":{"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1041:5:13","subExpression":{"id":2071,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2067,"src":"1041:3:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2073,"nodeType":"ExpressionStatement","src":"1041:5:13"},{"AST":{"nodeType":"YulBlock","src":"1124:86:13","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1154:3:13"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"1175:2:13","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"1164:3:13"},"nodeType":"YulFunctionCall","src":"1164:14:13"},{"name":"HEX_DIGITS","nodeType":"YulIdentifier","src":"1180:10:13"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"1159:4:13"},"nodeType":"YulFunctionCall","src":"1159:32:13"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"1146:7:13"},"nodeType":"YulFunctionCall","src":"1146:46:13"},"nodeType":"YulExpressionStatement","src":"1146:46:13"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2032,"isOffset":false,"isSlot":false,"src":"1180:10:13","valueSize":1},{"declaration":2067,"isOffset":false,"isSlot":false,"src":"1154:3:13","valueSize":1},{"declaration":2045,"isOffset":false,"isSlot":false,"src":"1168:5:13","valueSize":1}],"id":2074,"nodeType":"InlineAssembly","src":"1115:95:13"},{"expression":{"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"1227:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":2076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1236:2:13","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1227:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2078,"nodeType":"ExpressionStatement","src":"1227:11:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2079,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2045,"src":"1260:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1269:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1260:10:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2083,"nodeType":"IfStatement","src":"1256:21:13","trueBody":{"id":2082,"nodeType":"Break","src":"1272:5:13"}}]},"condition":{"hexValue":"74727565","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1017:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":2085,"nodeType":"WhileStatement","src":"1010:282:13"},{"expression":{"id":2086,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"1312:6:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2049,"id":2087,"nodeType":"Return","src":"1305:13:13"}]}]},"documentation":{"id":2043,"nodeType":"StructuredDocumentation","src":"542:90:13","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":2090,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"646:8:13","nodeType":"FunctionDefinition","parameters":{"id":2046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2045,"mutability":"mutable","name":"value","nameLocation":"663:5:13","nodeType":"VariableDeclaration","scope":2090,"src":"655:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2044,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"654:15:13"},"returnParameters":{"id":2049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2090,"src":"693:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2047,"name":"string","nodeType":"ElementaryTypeName","src":"693:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"692:15:13"},"scope":2277,"src":"637:698:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2115,"nodeType":"Block","src":"1511:92:13","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":2103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2101,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2093,"src":"1542:5:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":2102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1550:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1542:9:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":2105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1560:2:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1542:20:13","trueExpression":{"hexValue":"2d","id":2104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1554:3:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":2110,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2093,"src":"1588:5:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":2108,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"1573:10:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$3870_$","typeString":"type(library SignedMath)"}},"id":2109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1584:3:13","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":3869,"src":"1573:14:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1573:21:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2107,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1564:8:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1564:31:13","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":2099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1528:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2098,"name":"string","nodeType":"ElementaryTypeName","src":"1528:6:13","typeDescriptions":{}}},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1535:6:13","memberName":"concat","nodeType":"MemberAccess","src":"1528:13:13","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:68:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2097,"id":2114,"nodeType":"Return","src":"1521:75:13"}]},"documentation":{"id":2091,"nodeType":"StructuredDocumentation","src":"1341:89:13","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":2116,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"1444:14:13","nodeType":"FunctionDefinition","parameters":{"id":2094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2093,"mutability":"mutable","name":"value","nameLocation":"1466:5:13","nodeType":"VariableDeclaration","scope":2116,"src":"1459:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2092,"name":"int256","nodeType":"ElementaryTypeName","src":"1459:6:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1458:14:13"},"returnParameters":{"id":2097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2116,"src":"1496:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2095,"name":"string","nodeType":"ElementaryTypeName","src":"1496:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1495:15:13"},"scope":2277,"src":"1435:168:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2135,"nodeType":"Block","src":"1782:100:13","statements":[{"id":2134,"nodeType":"UncheckedBlock","src":"1792:84:13","statements":[{"expression":{"arguments":[{"id":2125,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"1835:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2128,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"1854:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2126,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3765,"src":"1842:4:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$3765_$","typeString":"type(library Math)"}},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1847:6:13","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":3707,"src":"1842:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1842:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1842:22:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2124,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2136,2219,2239],"referencedDeclaration":2219,"src":"1823:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1823:42:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2123,"id":2133,"nodeType":"Return","src":"1816:49:13"}]}]},"documentation":{"id":2117,"nodeType":"StructuredDocumentation","src":"1609:94:13","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":2136,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1717:11:13","nodeType":"FunctionDefinition","parameters":{"id":2120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2119,"mutability":"mutable","name":"value","nameLocation":"1737:5:13","nodeType":"VariableDeclaration","scope":2136,"src":"1729:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1729:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1728:15:13"},"returnParameters":{"id":2123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2122,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2136,"src":"1767:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2121,"name":"string","nodeType":"ElementaryTypeName","src":"1767:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1766:15:13"},"scope":2277,"src":"1708:174:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2218,"nodeType":"Block","src":"2095:435:13","statements":[{"assignments":[2147],"declarations":[{"constant":false,"id":2147,"mutability":"mutable","name":"localValue","nameLocation":"2113:10:13","nodeType":"VariableDeclaration","scope":2218,"src":"2105:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2146,"name":"uint256","nodeType":"ElementaryTypeName","src":"2105:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2149,"initialValue":{"id":2148,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"2126:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2105:26:13"},{"assignments":[2151],"declarations":[{"constant":false,"id":2151,"mutability":"mutable","name":"buffer","nameLocation":"2154:6:13","nodeType":"VariableDeclaration","scope":2218,"src":"2141:19:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2150,"name":"bytes","nodeType":"ElementaryTypeName","src":"2141:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2160,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2173:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2155,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"2177:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2173:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":2157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2186:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2173:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2153,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2163:9:13","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2152,"name":"bytes","nodeType":"ElementaryTypeName","src":"2167:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2163:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2141:47:13"},{"expression":{"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2161,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2198:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2163,"indexExpression":{"hexValue":"30","id":2162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2205:1:13","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:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":2164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2210:3:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2198:15:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2166,"nodeType":"ExpressionStatement","src":"2198:15:13"},{"expression":{"id":2171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2167,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2223:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2169,"indexExpression":{"hexValue":"31","id":2168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2230:1:13","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:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":2170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2235:3:13","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2223:15:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2172,"nodeType":"ExpressionStatement","src":"2223:15:13"},{"body":{"id":2201,"nodeType":"Block","src":"2293:95:13","statements":[{"expression":{"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2187,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2307:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2189,"indexExpression":{"id":2188,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"2314:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2307:9:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2190,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"2319:10:13","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":2194,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2191,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"2330:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":2192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2343:3:13","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2330:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2319:28:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2307:40:13","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2196,"nodeType":"ExpressionStatement","src":"2307:40:13"},{"expression":{"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2197,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"2361:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2376:1:13","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2361:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2200,"nodeType":"ExpressionStatement","src":"2361:16:13"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2181,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"2281:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":2182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2285:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2281:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2202,"initializationExpression":{"assignments":[2174],"declarations":[{"constant":false,"id":2174,"mutability":"mutable","name":"i","nameLocation":"2261:1:13","nodeType":"VariableDeclaration","scope":2202,"src":"2253:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2173,"name":"uint256","nodeType":"ElementaryTypeName","src":"2253:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2180,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2265:1:13","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2176,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"2269:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2265:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2278:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2265:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2253:26:13"},"loopExpression":{"expression":{"id":2185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2288:3:13","subExpression":{"id":2184,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"2290:1:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2186,"nodeType":"ExpressionStatement","src":"2288:3:13"},"nodeType":"ForStatement","src":"2248:140:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2203,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2147,"src":"2401:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2415:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2401:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2212,"nodeType":"IfStatement","src":"2397:96:13","trueBody":{"id":2211,"nodeType":"Block","src":"2418:75:13","statements":[{"errorCall":{"arguments":[{"id":2207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"2468:5:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2208,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2141,"src":"2475:6:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2206,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"2439:28:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2439:43:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2210,"nodeType":"RevertStatement","src":"2432:50:13"}]}},{"expression":{"arguments":[{"id":2215,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2516:6:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2509:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2213,"name":"string","nodeType":"ElementaryTypeName","src":"2509:6:13","typeDescriptions":{}}},"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2509:14:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2145,"id":2217,"nodeType":"Return","src":"2502:21:13"}]},"documentation":{"id":2137,"nodeType":"StructuredDocumentation","src":"1888:112:13","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":2219,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2014:11:13","nodeType":"FunctionDefinition","parameters":{"id":2142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2139,"mutability":"mutable","name":"value","nameLocation":"2034:5:13","nodeType":"VariableDeclaration","scope":2219,"src":"2026:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2138,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2141,"mutability":"mutable","name":"length","nameLocation":"2049:6:13","nodeType":"VariableDeclaration","scope":2219,"src":"2041:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2140,"name":"uint256","nodeType":"ElementaryTypeName","src":"2041:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2025:31:13"},"returnParameters":{"id":2145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2219,"src":"2080:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2143,"name":"string","nodeType":"ElementaryTypeName","src":"2080:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2079:15:13"},"scope":2277,"src":"2005:525:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2238,"nodeType":"Block","src":"2762:75:13","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":2232,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2222,"src":"2807:4:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2799:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2230,"name":"uint160","nodeType":"ElementaryTypeName","src":"2799:7:13","typeDescriptions":{}}},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2791:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2228,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:13","typeDescriptions":{}}},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2235,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2035,"src":"2815:14:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2227,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[2136,2219,2239],"referencedDeclaration":2219,"src":"2779:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2779:51:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2226,"id":2237,"nodeType":"Return","src":"2772:58:13"}]},"documentation":{"id":2220,"nodeType":"StructuredDocumentation","src":"2536:148:13","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":2239,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2698:11:13","nodeType":"FunctionDefinition","parameters":{"id":2223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2222,"mutability":"mutable","name":"addr","nameLocation":"2718:4:13","nodeType":"VariableDeclaration","scope":2239,"src":"2710:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2221,"name":"address","nodeType":"ElementaryTypeName","src":"2710:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2709:14:13"},"returnParameters":{"id":2226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2239,"src":"2747:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2224,"name":"string","nodeType":"ElementaryTypeName","src":"2747:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2746:15:13"},"scope":2277,"src":"2689:148:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2275,"nodeType":"Block","src":"2992:104:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":2251,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"3015:1:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3009:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2249,"name":"bytes","nodeType":"ElementaryTypeName","src":"3009:5:13","typeDescriptions":{}}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3009:8:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3018:6:13","memberName":"length","nodeType":"MemberAccess","src":"3009:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2256,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2244,"src":"3034:1:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3028:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2254,"name":"bytes","nodeType":"ElementaryTypeName","src":"3028:5:13","typeDescriptions":{}}},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3028:8:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3037:6:13","memberName":"length","nodeType":"MemberAccess","src":"3028:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3009:34:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2263,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"3063:1:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3057:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2261,"name":"bytes","nodeType":"ElementaryTypeName","src":"3057:5:13","typeDescriptions":{}}},"id":2264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:8:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2260,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3047:9:13","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3047:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":2269,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2244,"src":"3086:1:13","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2267,"name":"bytes","nodeType":"ElementaryTypeName","src":"3080:5:13","typeDescriptions":{}}},"id":2270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:8:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2266,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3070:9:13","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:19:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3047:42:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3009:80:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2248,"id":2274,"nodeType":"Return","src":"3002:87:13"}]},"documentation":{"id":2240,"nodeType":"StructuredDocumentation","src":"2843:66:13","text":" @dev Returns true if the two strings are equal."},"id":2276,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"2923:5:13","nodeType":"FunctionDefinition","parameters":{"id":2245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2242,"mutability":"mutable","name":"a","nameLocation":"2943:1:13","nodeType":"VariableDeclaration","scope":2276,"src":"2929:15:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2241,"name":"string","nodeType":"ElementaryTypeName","src":"2929:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2244,"mutability":"mutable","name":"b","nameLocation":"2960:1:13","nodeType":"VariableDeclaration","scope":2276,"src":"2946:15:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2243,"name":"string","nodeType":"ElementaryTypeName","src":"2946:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2928:34:13"},"returnParameters":{"id":2248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2276,"src":"2986:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2246,"name":"bool","nodeType":"ElementaryTypeName","src":"2986:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2985:6:13"},"scope":2277,"src":"2914:182:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2278,"src":"251:2847:13","usedErrors":[2042],"usedEvents":[]}],"src":"101:2998:13"},"id":13},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","exportedSymbols":{"ECDSA":[2625]},"id":2626,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2279,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:14"},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSA","contractDependencies":[],"contractKind":"library","documentation":{"id":2280,"nodeType":"StructuredDocumentation","src":"138:205:14","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":2625,"linearizedBaseContracts":[2625],"name":"ECDSA","nameLocation":"352:5:14","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSA.RecoverError","id":2285,"members":[{"id":2281,"name":"NoError","nameLocation":"392:7:14","nodeType":"EnumValue","src":"392:7:14"},{"id":2282,"name":"InvalidSignature","nameLocation":"409:16:14","nodeType":"EnumValue","src":"409:16:14"},{"id":2283,"name":"InvalidSignatureLength","nameLocation":"435:22:14","nodeType":"EnumValue","src":"435:22:14"},{"id":2284,"name":"InvalidSignatureS","nameLocation":"467:17:14","nodeType":"EnumValue","src":"467:17:14"}],"name":"RecoverError","nameLocation":"369:12:14","nodeType":"EnumDefinition","src":"364:126:14"},{"documentation":{"id":2286,"nodeType":"StructuredDocumentation","src":"496:63:14","text":" @dev The signature derives the `address(0)`."},"errorSelector":"f645eedf","id":2288,"name":"ECDSAInvalidSignature","nameLocation":"570:21:14","nodeType":"ErrorDefinition","parameters":{"id":2287,"nodeType":"ParameterList","parameters":[],"src":"591:2:14"},"src":"564:30:14"},{"documentation":{"id":2289,"nodeType":"StructuredDocumentation","src":"600:60:14","text":" @dev The signature has an invalid length."},"errorSelector":"fce698f7","id":2293,"name":"ECDSAInvalidSignatureLength","nameLocation":"671:27:14","nodeType":"ErrorDefinition","parameters":{"id":2292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2291,"mutability":"mutable","name":"length","nameLocation":"707:6:14","nodeType":"VariableDeclaration","scope":2293,"src":"699:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2290,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"698:16:14"},"src":"665:50:14"},{"documentation":{"id":2294,"nodeType":"StructuredDocumentation","src":"721:85:14","text":" @dev The signature has an S value that is in the upper half order."},"errorSelector":"d78bce0c","id":2298,"name":"ECDSAInvalidSignatureS","nameLocation":"817:22:14","nodeType":"ErrorDefinition","parameters":{"id":2297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2296,"mutability":"mutable","name":"s","nameLocation":"848:1:14","nodeType":"VariableDeclaration","scope":2298,"src":"840:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2295,"name":"bytes32","nodeType":"ElementaryTypeName","src":"840:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"839:11:14"},"src":"811:40:14"},{"body":{"id":2350,"nodeType":"Block","src":"2242:653:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2313,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2303,"src":"2256:9:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2266:6:14","memberName":"length","nodeType":"MemberAccess","src":"2256:16:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":2315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2276:2:14","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2256:22:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2348,"nodeType":"Block","src":"2781:108:14","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":2337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2811:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2803:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2335,"name":"address","nodeType":"ElementaryTypeName","src":"2803:7:14","typeDescriptions":{}}},"id":2338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2803:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2339,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"2815:12:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2285_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2828:22:14","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":2283,"src":"2815:35:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"expression":{"id":2343,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2303,"src":"2860:9:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2870:6:14","memberName":"length","nodeType":"MemberAccess","src":"2860:16:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2342,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2852:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2852:7:14","typeDescriptions":{}}},"id":2345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2852:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2346,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2802:76:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2312,"id":2347,"nodeType":"Return","src":"2795:83:14"}]},"id":2349,"nodeType":"IfStatement","src":"2252:637:14","trueBody":{"id":2334,"nodeType":"Block","src":"2280:495:14","statements":[{"assignments":[2318],"declarations":[{"constant":false,"id":2318,"mutability":"mutable","name":"r","nameLocation":"2302:1:14","nodeType":"VariableDeclaration","scope":2334,"src":"2294:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2294:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2319,"nodeType":"VariableDeclarationStatement","src":"2294:9:14"},{"assignments":[2321],"declarations":[{"constant":false,"id":2321,"mutability":"mutable","name":"s","nameLocation":"2325:1:14","nodeType":"VariableDeclaration","scope":2334,"src":"2317:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2322,"nodeType":"VariableDeclarationStatement","src":"2317:9:14"},{"assignments":[2324],"declarations":[{"constant":false,"id":2324,"mutability":"mutable","name":"v","nameLocation":"2346:1:14","nodeType":"VariableDeclaration","scope":2334,"src":"2340:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2323,"name":"uint8","nodeType":"ElementaryTypeName","src":"2340:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2325,"nodeType":"VariableDeclarationStatement","src":"2340:7:14"},{"AST":{"nodeType":"YulBlock","src":"2548:171:14","statements":[{"nodeType":"YulAssignment","src":"2566:32:14","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2581:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"2592:4:14","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2577:3:14"},"nodeType":"YulFunctionCall","src":"2577:20:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2571:5:14"},"nodeType":"YulFunctionCall","src":"2571:27:14"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"2566:1:14"}]},{"nodeType":"YulAssignment","src":"2615:32:14","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2630:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"2641:4:14","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2626:3:14"},"nodeType":"YulFunctionCall","src":"2626:20:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2620:5:14"},"nodeType":"YulFunctionCall","src":"2620:27:14"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"2615:1:14"}]},{"nodeType":"YulAssignment","src":"2664:41:14","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2674:1:14","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"2687:9:14"},{"kind":"number","nodeType":"YulLiteral","src":"2698:4:14","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2683:3:14"},"nodeType":"YulFunctionCall","src":"2683:20:14"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2677:5:14"},"nodeType":"YulFunctionCall","src":"2677:27:14"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"2669:4:14"},"nodeType":"YulFunctionCall","src":"2669:36:14"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"2664:1:14"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2318,"isOffset":false,"isSlot":false,"src":"2566:1:14","valueSize":1},{"declaration":2321,"isOffset":false,"isSlot":false,"src":"2615:1:14","valueSize":1},{"declaration":2303,"isOffset":false,"isSlot":false,"src":"2581:9:14","valueSize":1},{"declaration":2303,"isOffset":false,"isSlot":false,"src":"2630:9:14","valueSize":1},{"declaration":2303,"isOffset":false,"isSlot":false,"src":"2687:9:14","valueSize":1},{"declaration":2324,"isOffset":false,"isSlot":false,"src":"2664:1:14","valueSize":1}],"id":2326,"nodeType":"InlineAssembly","src":"2539:180:14"},{"expression":{"arguments":[{"id":2328,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"2750:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2329,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2324,"src":"2756:1:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2330,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2318,"src":"2759:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2331,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"2762:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2327,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2351,2431,2539],"referencedDeclaration":2539,"src":"2739:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2312,"id":2333,"nodeType":"Return","src":"2732:32:14"}]}}]},"documentation":{"id":2299,"nodeType":"StructuredDocumentation","src":"857:1267:14","text":" @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]"},"id":2351,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2138:10:14","nodeType":"FunctionDefinition","parameters":{"id":2304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2301,"mutability":"mutable","name":"hash","nameLocation":"2157:4:14","nodeType":"VariableDeclaration","scope":2351,"src":"2149:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2300,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2149:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2303,"mutability":"mutable","name":"signature","nameLocation":"2176:9:14","nodeType":"VariableDeclaration","scope":2351,"src":"2163:22:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2302,"name":"bytes","nodeType":"ElementaryTypeName","src":"2163:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2148:38:14"},"returnParameters":{"id":2312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2351,"src":"2210:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2305,"name":"address","nodeType":"ElementaryTypeName","src":"2210:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2351,"src":"2219:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2308,"nodeType":"UserDefinedTypeName","pathNode":{"id":2307,"name":"RecoverError","nameLocations":["2219:12:14"],"nodeType":"IdentifierPath","referencedDeclaration":2285,"src":"2219:12:14"},"referencedDeclaration":2285,"src":"2219:12:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2351,"src":"2233:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2310,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2233:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2209:32:14"},"scope":2625,"src":"2129:766:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2380,"nodeType":"Block","src":"3789:168:14","statements":[{"assignments":[2362,2365,2367],"declarations":[{"constant":false,"id":2362,"mutability":"mutable","name":"recovered","nameLocation":"3808:9:14","nodeType":"VariableDeclaration","scope":2380,"src":"3800:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2361,"name":"address","nodeType":"ElementaryTypeName","src":"3800:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2365,"mutability":"mutable","name":"error","nameLocation":"3832:5:14","nodeType":"VariableDeclaration","scope":2380,"src":"3819:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2364,"nodeType":"UserDefinedTypeName","pathNode":{"id":2363,"name":"RecoverError","nameLocations":["3819:12:14"],"nodeType":"IdentifierPath","referencedDeclaration":2285,"src":"3819:12:14"},"referencedDeclaration":2285,"src":"3819:12:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2367,"mutability":"mutable","name":"errorArg","nameLocation":"3847:8:14","nodeType":"VariableDeclaration","scope":2380,"src":"3839:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2366,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3839:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2372,"initialValue":{"arguments":[{"id":2369,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"3870:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2370,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2356,"src":"3876:9:14","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2368,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2351,2431,2539],"referencedDeclaration":2351,"src":"3859:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:27:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"3799:87:14"},{"expression":{"arguments":[{"id":2374,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2365,"src":"3908:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},{"id":2375,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"3915:8:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2373,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"3896:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2285_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3896:28:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2377,"nodeType":"ExpressionStatement","src":"3896:28:14"},{"expression":{"id":2378,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2362,"src":"3941:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2360,"id":2379,"nodeType":"Return","src":"3934:16:14"}]},"documentation":{"id":2352,"nodeType":"StructuredDocumentation","src":"2901:796:14","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it."},"id":2381,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3711:7:14","nodeType":"FunctionDefinition","parameters":{"id":2357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2354,"mutability":"mutable","name":"hash","nameLocation":"3727:4:14","nodeType":"VariableDeclaration","scope":2381,"src":"3719:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3719:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2356,"mutability":"mutable","name":"signature","nameLocation":"3746:9:14","nodeType":"VariableDeclaration","scope":2381,"src":"3733:22:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2355,"name":"bytes","nodeType":"ElementaryTypeName","src":"3733:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3718:38:14"},"returnParameters":{"id":2360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2359,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2381,"src":"3780:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2358,"name":"address","nodeType":"ElementaryTypeName","src":"3780:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3779:9:14"},"scope":2625,"src":"3702:255:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2430,"nodeType":"Block","src":"4285:342:14","statements":[{"id":2429,"nodeType":"UncheckedBlock","src":"4295:326:14","statements":[{"assignments":[2399],"declarations":[{"constant":false,"id":2399,"mutability":"mutable","name":"s","nameLocation":"4327:1:14","nodeType":"VariableDeclaration","scope":2429,"src":"4319:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2398,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4319:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2406,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2400,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"4331:2:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":2403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4344:66:14","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":2402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4336:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2401,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4336:7:14","typeDescriptions":{}}},"id":2404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4336:75:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4331:80:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4319:92:14"},{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"v","nameLocation":"4528:1:14","nodeType":"VariableDeclaration","scope":2429,"src":"4522:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2407,"name":"uint8","nodeType":"ElementaryTypeName","src":"4522:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2421,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2413,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2388,"src":"4547:2:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4539:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2411,"name":"uint256","nodeType":"ElementaryTypeName","src":"4539:7:14","typeDescriptions":{}}},"id":2414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4539:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4554:3:14","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4539:18:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2417,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4538:20:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":2418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4561:2:14","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4538:25:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4532:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2409,"name":"uint8","nodeType":"ElementaryTypeName","src":"4532:5:14","typeDescriptions":{}}},"id":2420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4532:32:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4522:42:14"},{"expression":{"arguments":[{"id":2423,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2384,"src":"4596:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2424,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"4602:1:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2425,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2386,"src":"4605:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2426,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2399,"src":"4608:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2422,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2351,2431,2539],"referencedDeclaration":2539,"src":"4585:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4585:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2397,"id":2428,"nodeType":"Return","src":"4578:32:14"}]}]},"documentation":{"id":2382,"nodeType":"StructuredDocumentation","src":"3963:205:14","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[EIP-2098 short signatures]"},"id":2431,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4182:10:14","nodeType":"FunctionDefinition","parameters":{"id":2389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2384,"mutability":"mutable","name":"hash","nameLocation":"4201:4:14","nodeType":"VariableDeclaration","scope":2431,"src":"4193:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2383,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4193:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2386,"mutability":"mutable","name":"r","nameLocation":"4215:1:14","nodeType":"VariableDeclaration","scope":2431,"src":"4207:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4207:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2388,"mutability":"mutable","name":"vs","nameLocation":"4226:2:14","nodeType":"VariableDeclaration","scope":2431,"src":"4218:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4218:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4192:37:14"},"returnParameters":{"id":2397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2431,"src":"4253:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2390,"name":"address","nodeType":"ElementaryTypeName","src":"4253:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2394,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2431,"src":"4262:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2393,"nodeType":"UserDefinedTypeName","pathNode":{"id":2392,"name":"RecoverError","nameLocations":["4262:12:14"],"nodeType":"IdentifierPath","referencedDeclaration":2285,"src":"4262:12:14"},"referencedDeclaration":2285,"src":"4262:12:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2431,"src":"4276:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4276:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4252:32:14"},"scope":2625,"src":"4173:454:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2463,"nodeType":"Block","src":"4840:164:14","statements":[{"assignments":[2444,2447,2449],"declarations":[{"constant":false,"id":2444,"mutability":"mutable","name":"recovered","nameLocation":"4859:9:14","nodeType":"VariableDeclaration","scope":2463,"src":"4851:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2443,"name":"address","nodeType":"ElementaryTypeName","src":"4851:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2447,"mutability":"mutable","name":"error","nameLocation":"4883:5:14","nodeType":"VariableDeclaration","scope":2463,"src":"4870:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2446,"nodeType":"UserDefinedTypeName","pathNode":{"id":2445,"name":"RecoverError","nameLocations":["4870:12:14"],"nodeType":"IdentifierPath","referencedDeclaration":2285,"src":"4870:12:14"},"referencedDeclaration":2285,"src":"4870:12:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2449,"mutability":"mutable","name":"errorArg","nameLocation":"4898:8:14","nodeType":"VariableDeclaration","scope":2463,"src":"4890:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2448,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4890:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2455,"initialValue":{"arguments":[{"id":2451,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"4921:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2452,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2436,"src":"4927:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2453,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"4930:2:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2450,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2351,2431,2539],"referencedDeclaration":2431,"src":"4910:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4910:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"4850:83:14"},{"expression":{"arguments":[{"id":2457,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2447,"src":"4955:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},{"id":2458,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"4962:8:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2456,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"4943:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2285_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":2459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4943:28:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2460,"nodeType":"ExpressionStatement","src":"4943:28:14"},{"expression":{"id":2461,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2444,"src":"4988:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2442,"id":2462,"nodeType":"Return","src":"4981:16:14"}]},"documentation":{"id":2432,"nodeType":"StructuredDocumentation","src":"4633:116:14","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately."},"id":2464,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4763:7:14","nodeType":"FunctionDefinition","parameters":{"id":2439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2434,"mutability":"mutable","name":"hash","nameLocation":"4779:4:14","nodeType":"VariableDeclaration","scope":2464,"src":"4771:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2433,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4771:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2436,"mutability":"mutable","name":"r","nameLocation":"4793:1:14","nodeType":"VariableDeclaration","scope":2464,"src":"4785:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2435,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4785:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2438,"mutability":"mutable","name":"vs","nameLocation":"4804:2:14","nodeType":"VariableDeclaration","scope":2464,"src":"4796:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2437,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4796:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4770:37:14"},"returnParameters":{"id":2442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2464,"src":"4831:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2440,"name":"address","nodeType":"ElementaryTypeName","src":"4831:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4830:9:14"},"scope":2625,"src":"4754:250:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2538,"nodeType":"Block","src":"5298:1372:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2485,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2473,"src":"6194:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6186:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2483,"name":"uint256","nodeType":"ElementaryTypeName","src":"6186:7:14","typeDescriptions":{}}},"id":2486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":2487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6199:66:14","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6186:79:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2499,"nodeType":"IfStatement","src":"6182:164:14","trueBody":{"id":2498,"nodeType":"Block","src":"6267:79:14","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":2491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6297:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6289:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2489,"name":"address","nodeType":"ElementaryTypeName","src":"6289:7:14","typeDescriptions":{}}},"id":2492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6289:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2493,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"6301:12:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2285_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6314:17:14","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":2284,"src":"6301:30:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},{"id":2495,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2473,"src":"6333:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2496,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6288:47:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2482,"id":2497,"nodeType":"Return","src":"6281:54:14"}]}},{"assignments":[2501],"declarations":[{"constant":false,"id":2501,"mutability":"mutable","name":"signer","nameLocation":"6448:6:14","nodeType":"VariableDeclaration","scope":2538,"src":"6440:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2500,"name":"address","nodeType":"ElementaryTypeName","src":"6440:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2508,"initialValue":{"arguments":[{"id":2503,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"6467:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2504,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2469,"src":"6473:1:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2505,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"6476:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2506,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2473,"src":"6479:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2502,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6457:9:14","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6457:24:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6440:41:14"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2509,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"6495:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6513:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6505:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2510,"name":"address","nodeType":"ElementaryTypeName","src":"6505:7:14","typeDescriptions":{}}},"id":2513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6505:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6495:20:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2528,"nodeType":"IfStatement","src":"6491:113:14","trueBody":{"id":2527,"nodeType":"Block","src":"6517:87:14","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":2517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6547:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6539:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2515,"name":"address","nodeType":"ElementaryTypeName","src":"6539:7:14","typeDescriptions":{}}},"id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6539:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2519,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"6551:12:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2285_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6564:16:14","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":2282,"src":"6551:29:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":2523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6590:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6582:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2521,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6582:7:14","typeDescriptions":{}}},"id":2524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6582:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2525,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6538:55:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2482,"id":2526,"nodeType":"Return","src":"6531:62:14"}]}},{"expression":{"components":[{"id":2529,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"6622:6:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2530,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"6630:12:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2285_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6643:7:14","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":2281,"src":"6630:20:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":2534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6660:1:14","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6652:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2532,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6652:7:14","typeDescriptions":{}}},"id":2535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6652:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2536,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6621:42:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2482,"id":2537,"nodeType":"Return","src":"6614:49:14"}]},"documentation":{"id":2465,"nodeType":"StructuredDocumentation","src":"5010:125:14","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":2539,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5149:10:14","nodeType":"FunctionDefinition","parameters":{"id":2474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2467,"mutability":"mutable","name":"hash","nameLocation":"5177:4:14","nodeType":"VariableDeclaration","scope":2539,"src":"5169:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2466,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5169:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2469,"mutability":"mutable","name":"v","nameLocation":"5197:1:14","nodeType":"VariableDeclaration","scope":2539,"src":"5191:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2468,"name":"uint8","nodeType":"ElementaryTypeName","src":"5191:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2471,"mutability":"mutable","name":"r","nameLocation":"5216:1:14","nodeType":"VariableDeclaration","scope":2539,"src":"5208:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2470,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5208:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2473,"mutability":"mutable","name":"s","nameLocation":"5235:1:14","nodeType":"VariableDeclaration","scope":2539,"src":"5227:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5227:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5159:83:14"},"returnParameters":{"id":2482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2539,"src":"5266:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2475,"name":"address","nodeType":"ElementaryTypeName","src":"5266:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2539,"src":"5275:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2478,"nodeType":"UserDefinedTypeName","pathNode":{"id":2477,"name":"RecoverError","nameLocations":["5275:12:14"],"nodeType":"IdentifierPath","referencedDeclaration":2285,"src":"5275:12:14"},"referencedDeclaration":2285,"src":"5275:12:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2539,"src":"5289:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2480,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5289:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5265:32:14"},"scope":2625,"src":"5140:1530:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2574,"nodeType":"Block","src":"6897:166:14","statements":[{"assignments":[2554,2557,2559],"declarations":[{"constant":false,"id":2554,"mutability":"mutable","name":"recovered","nameLocation":"6916:9:14","nodeType":"VariableDeclaration","scope":2574,"src":"6908:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2553,"name":"address","nodeType":"ElementaryTypeName","src":"6908:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2557,"mutability":"mutable","name":"error","nameLocation":"6940:5:14","nodeType":"VariableDeclaration","scope":2574,"src":"6927:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2556,"nodeType":"UserDefinedTypeName","pathNode":{"id":2555,"name":"RecoverError","nameLocations":["6927:12:14"],"nodeType":"IdentifierPath","referencedDeclaration":2285,"src":"6927:12:14"},"referencedDeclaration":2285,"src":"6927:12:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2559,"mutability":"mutable","name":"errorArg","nameLocation":"6955:8:14","nodeType":"VariableDeclaration","scope":2574,"src":"6947:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2558,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6947:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2566,"initialValue":{"arguments":[{"id":2561,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2542,"src":"6978:4:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2562,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2544,"src":"6984:1:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2563,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2546,"src":"6987:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2564,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"6990:1:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2560,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2351,2431,2539],"referencedDeclaration":2539,"src":"6967:10:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6967:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$2285_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6907:85:14"},{"expression":{"arguments":[{"id":2568,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2557,"src":"7014:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},{"id":2569,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"7021:8:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2567,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2624,"src":"7002:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2285_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7002:28:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2571,"nodeType":"ExpressionStatement","src":"7002:28:14"},{"expression":{"id":2572,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2554,"src":"7047:9:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2552,"id":2573,"nodeType":"Return","src":"7040:16:14"}]},"documentation":{"id":2540,"nodeType":"StructuredDocumentation","src":"6676:122:14","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":2575,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6812:7:14","nodeType":"FunctionDefinition","parameters":{"id":2549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2542,"mutability":"mutable","name":"hash","nameLocation":"6828:4:14","nodeType":"VariableDeclaration","scope":2575,"src":"6820:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2541,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6820:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2544,"mutability":"mutable","name":"v","nameLocation":"6840:1:14","nodeType":"VariableDeclaration","scope":2575,"src":"6834:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2543,"name":"uint8","nodeType":"ElementaryTypeName","src":"6834:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2546,"mutability":"mutable","name":"r","nameLocation":"6851:1:14","nodeType":"VariableDeclaration","scope":2575,"src":"6843:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6843:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2548,"mutability":"mutable","name":"s","nameLocation":"6862:1:14","nodeType":"VariableDeclaration","scope":2575,"src":"6854:9:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2547,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6854:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6819:45:14"},"returnParameters":{"id":2552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2551,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2575,"src":"6888:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2550,"name":"address","nodeType":"ElementaryTypeName","src":"6888:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6887:9:14"},"scope":2625,"src":"6803:260:14","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2623,"nodeType":"Block","src":"7268:460:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2584,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"7282:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2585,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"7291:12:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2285_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7304:7:14","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":2281,"src":"7291:20:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"src":"7282:29:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2590,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"7378:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2591,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"7387:12:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2285_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7400:16:14","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":2282,"src":"7387:29:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"src":"7378:38:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"id":2601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2598,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"7483:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2599,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"7492:12:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2285_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7505:22:14","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":2283,"src":"7492:35:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"src":"7483:44:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2610,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"7617:5:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2611,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2285,"src":"7626:12:14","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2285_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7639:17:14","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":2284,"src":"7626:30:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"src":"7617:39:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2619,"nodeType":"IfStatement","src":"7613:109:14","trueBody":{"id":2618,"nodeType":"Block","src":"7658:64:14","statements":[{"errorCall":{"arguments":[{"id":2615,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2581,"src":"7702:8:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2614,"name":"ECDSAInvalidSignatureS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"7679:22:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$__$","typeString":"function (bytes32) pure"}},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7679:32:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2617,"nodeType":"RevertStatement","src":"7672:39:14"}]}},"id":2620,"nodeType":"IfStatement","src":"7479:243:14","trueBody":{"id":2609,"nodeType":"Block","src":"7529:78:14","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":2605,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2581,"src":"7586:8:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7578:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2603,"name":"uint256","nodeType":"ElementaryTypeName","src":"7578:7:14","typeDescriptions":{}}},"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7578:17:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2602,"name":"ECDSAInvalidSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2293,"src":"7550:27:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":2607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7550:46:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2608,"nodeType":"RevertStatement","src":"7543:53:14"}]}},"id":2621,"nodeType":"IfStatement","src":"7374:348:14","trueBody":{"id":2597,"nodeType":"Block","src":"7418:55:14","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2594,"name":"ECDSAInvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2288,"src":"7439:21:14","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7439:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2596,"nodeType":"RevertStatement","src":"7432:30:14"}]}},"id":2622,"nodeType":"IfStatement","src":"7278:444:14","trueBody":{"id":2589,"nodeType":"Block","src":"7313:55:14","statements":[{"functionReturnParameters":2583,"id":2588,"nodeType":"Return","src":"7327:7:14"}]}}]},"documentation":{"id":2576,"nodeType":"StructuredDocumentation","src":"7069:122:14","text":" @dev Optionally reverts with the corresponding custom error according to the `error` argument provided."},"id":2624,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"7205:11:14","nodeType":"FunctionDefinition","parameters":{"id":2582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2579,"mutability":"mutable","name":"error","nameLocation":"7230:5:14","nodeType":"VariableDeclaration","scope":2624,"src":"7217:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2578,"nodeType":"UserDefinedTypeName","pathNode":{"id":2577,"name":"RecoverError","nameLocations":["7217:12:14"],"nodeType":"IdentifierPath","referencedDeclaration":2285,"src":"7217:12:14"},"referencedDeclaration":2285,"src":"7217:12:14","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2285","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2581,"mutability":"mutable","name":"errorArg","nameLocation":"7245:8:14","nodeType":"VariableDeclaration","scope":2624,"src":"7237:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2580,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7237:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7216:38:14"},"returnParameters":{"id":2583,"nodeType":"ParameterList","parameters":[],"src":"7268:0:14"},"scope":2625,"src":"7196:532:14","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2626,"src":"344:7386:14","usedErrors":[2288,2293,2298],"usedEvents":[]}],"src":"112:7619:14"},"id":14},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","exportedSymbols":{"MessageHashUtils":[2699],"Strings":[2277]},"id":2700,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2627,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:15"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../Strings.sol","id":2629,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2700,"sourceUnit":2278,"src":"149:39:15","symbolAliases":[{"foreign":{"id":2628,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2277,"src":"157:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"MessageHashUtils","contractDependencies":[],"contractKind":"library","documentation":{"id":2630,"nodeType":"StructuredDocumentation","src":"190:330:15","text":" @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n The library provides methods for generating a hash of a message that conforms to the\n https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n specifications."},"fullyImplemented":true,"id":2699,"linearizedBaseContracts":[2699],"name":"MessageHashUtils","nameLocation":"529:16:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":2639,"nodeType":"Block","src":"1314:368:15","statements":[{"AST":{"nodeType":"YulBlock","src":"1376:300:15","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1397:4:15","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nodeType":"YulLiteral","src":"1403:34:15","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1390:6:15"},"nodeType":"YulFunctionCall","src":"1390:48:15"},"nodeType":"YulExpressionStatement","src":"1390:48:15"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1499:4:15","type":"","value":"0x1c"},{"name":"messageHash","nodeType":"YulIdentifier","src":"1505:11:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1492:6:15"},"nodeType":"YulFunctionCall","src":"1492:25:15"},"nodeType":"YulExpressionStatement","src":"1492:25:15"},{"nodeType":"YulAssignment","src":"1571:31:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1591:4:15","type":"","value":"0x00"},{"kind":"number","nodeType":"YulLiteral","src":"1597:4:15","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"1581:9:15"},"nodeType":"YulFunctionCall","src":"1581:21:15"},"variableNames":[{"name":"digest","nodeType":"YulIdentifier","src":"1571:6:15"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2636,"isOffset":false,"isSlot":false,"src":"1571:6:15","valueSize":1},{"declaration":2633,"isOffset":false,"isSlot":false,"src":"1505:11:15","valueSize":1}],"id":2638,"nodeType":"InlineAssembly","src":"1367:309:15"}]},"documentation":{"id":2631,"nodeType":"StructuredDocumentation","src":"552:665:15","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing a bytes32 `messageHash` with\n `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n keccak256, although any bytes32 value can be safely used because the final digest will\n be re-hashed.\n See {ECDSA-recover}."},"id":2640,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"1231:22:15","nodeType":"FunctionDefinition","parameters":{"id":2634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2633,"mutability":"mutable","name":"messageHash","nameLocation":"1262:11:15","nodeType":"VariableDeclaration","scope":2640,"src":"1254:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1254:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1253:21:15"},"returnParameters":{"id":2637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2636,"mutability":"mutable","name":"digest","nameLocation":"1306:6:15","nodeType":"VariableDeclaration","scope":2640,"src":"1298:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2635,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1298:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1297:16:15"},"scope":2699,"src":"1222:460:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2665,"nodeType":"Block","src":"2234:143:15","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":2652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2286:32:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"arguments":[{"expression":{"id":2657,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"2343:7:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2351:6:15","memberName":"length","nodeType":"MemberAccess","src":"2343:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2655,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2277,"src":"2326:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$2277_$","typeString":"type(library Strings)"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2334:8:15","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":2090,"src":"2326:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2326:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2320:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2653,"name":"bytes","nodeType":"ElementaryTypeName","src":"2320:5:15","typeDescriptions":{}}},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2661,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"2361:7:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2273:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2649,"name":"bytes","nodeType":"ElementaryTypeName","src":"2273:5:15","typeDescriptions":{}}},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2279:6:15","memberName":"concat","nodeType":"MemberAccess","src":"2273:12:15","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2273:96:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2648,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2263:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2263:107:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2647,"id":2664,"nodeType":"Return","src":"2244:126:15"}]},"documentation":{"id":2641,"nodeType":"StructuredDocumentation","src":"1688:455:15","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing an arbitrary `message` with\n `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n See {ECDSA-recover}."},"id":2666,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"2157:22:15","nodeType":"FunctionDefinition","parameters":{"id":2644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2643,"mutability":"mutable","name":"message","nameLocation":"2193:7:15","nodeType":"VariableDeclaration","scope":2666,"src":"2180:20:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2642,"name":"bytes","nodeType":"ElementaryTypeName","src":"2180:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2179:22:15"},"returnParameters":{"id":2647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2646,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2666,"src":"2225:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2225:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2224:9:15"},"scope":2699,"src":"2148:229:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2685,"nodeType":"Block","src":"2831:80:15","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":2679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2875:10:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":2680,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2669,"src":"2887:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2681,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2671,"src":"2898:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2677,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2858:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2862:12:15","memberName":"encodePacked","nodeType":"MemberAccess","src":"2858:16:15","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2858:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2676,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2848:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2848:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2675,"id":2684,"nodeType":"Return","src":"2841:63:15"}]},"documentation":{"id":2667,"nodeType":"StructuredDocumentation","src":"2383:332:15","text":" @dev Returns the keccak256 digest of an EIP-191 signed data with version\n `0x00` (data with intended validator).\n The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n `validator` address. Then hashing the result.\n See {ECDSA-recover}."},"id":2686,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"2729:31:15","nodeType":"FunctionDefinition","parameters":{"id":2672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2669,"mutability":"mutable","name":"validator","nameLocation":"2769:9:15","nodeType":"VariableDeclaration","scope":2686,"src":"2761:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2668,"name":"address","nodeType":"ElementaryTypeName","src":"2761:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2671,"mutability":"mutable","name":"data","nameLocation":"2793:4:15","nodeType":"VariableDeclaration","scope":2686,"src":"2780:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2670,"name":"bytes","nodeType":"ElementaryTypeName","src":"2780:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2760:38:15"},"returnParameters":{"id":2675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2674,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2686,"src":"2822:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2673,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2822:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2821:9:15"},"scope":2699,"src":"2720:191:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2697,"nodeType":"Block","src":"3462:292:15","statements":[{"AST":{"nodeType":"YulBlock","src":"3524:224:15","statements":[{"nodeType":"YulVariableDeclaration","src":"3538:22:15","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3555:4:15","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3549:5:15"},"nodeType":"YulFunctionCall","src":"3549:11:15"},"variables":[{"name":"ptr","nodeType":"YulTypedName","src":"3542:3:15","type":""}]},{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3580:3:15"},{"hexValue":"1901","kind":"string","nodeType":"YulLiteral","src":"3585:10:15","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3573:6:15"},"nodeType":"YulFunctionCall","src":"3573:23:15"},"nodeType":"YulExpressionStatement","src":"3573:23:15"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3620:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3625:4:15","type":"","value":"0x02"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3616:3:15"},"nodeType":"YulFunctionCall","src":"3616:14:15"},{"name":"domainSeparator","nodeType":"YulIdentifier","src":"3632:15:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3609:6:15"},"nodeType":"YulFunctionCall","src":"3609:39:15"},"nodeType":"YulExpressionStatement","src":"3609:39:15"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3672:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3677:4:15","type":"","value":"0x22"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3668:3:15"},"nodeType":"YulFunctionCall","src":"3668:14:15"},{"name":"structHash","nodeType":"YulIdentifier","src":"3684:10:15"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3661:6:15"},"nodeType":"YulFunctionCall","src":"3661:34:15"},"nodeType":"YulExpressionStatement","src":"3661:34:15"},{"nodeType":"YulAssignment","src":"3708:30:15","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3728:3:15"},{"kind":"number","nodeType":"YulLiteral","src":"3733:4:15","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"3718:9:15"},"nodeType":"YulFunctionCall","src":"3718:20:15"},"variableNames":[{"name":"digest","nodeType":"YulIdentifier","src":"3708:6:15"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2694,"isOffset":false,"isSlot":false,"src":"3708:6:15","valueSize":1},{"declaration":2689,"isOffset":false,"isSlot":false,"src":"3632:15:15","valueSize":1},{"declaration":2691,"isOffset":false,"isSlot":false,"src":"3684:10:15","valueSize":1}],"id":2696,"nodeType":"InlineAssembly","src":"3515:233:15"}]},"documentation":{"id":2687,"nodeType":"StructuredDocumentation","src":"2917:431:15","text":" @dev Returns the keccak256 digest of an EIP-712 typed data (EIP-191 version `0x01`).\n The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n See {ECDSA-recover}."},"id":2698,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"3362:15:15","nodeType":"FunctionDefinition","parameters":{"id":2692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2689,"mutability":"mutable","name":"domainSeparator","nameLocation":"3386:15:15","nodeType":"VariableDeclaration","scope":2698,"src":"3378:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2688,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3378:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2691,"mutability":"mutable","name":"structHash","nameLocation":"3411:10:15","nodeType":"VariableDeclaration","scope":2698,"src":"3403:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2690,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3403:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3377:45:15"},"returnParameters":{"id":2695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2694,"mutability":"mutable","name":"digest","nameLocation":"3454:6:15","nodeType":"VariableDeclaration","scope":2698,"src":"3446:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2693,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3446:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3445:16:15"},"scope":2699,"src":"3353:401:15","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2700,"src":"521:3235:15","usedErrors":[],"usedEvents":[]}],"src":"123:3634:15"},"id":15},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2711]},"id":2712,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2701,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2702,"nodeType":"StructuredDocumentation","src":"141:279:16","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,"id":2711,"linearizedBaseContracts":[2711],"name":"IERC165","nameLocation":"431:7:16","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2703,"nodeType":"StructuredDocumentation","src":"445:340:16","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","id":2710,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"799:17:16","nodeType":"FunctionDefinition","parameters":{"id":2706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2705,"mutability":"mutable","name":"interfaceId","nameLocation":"824:11:16","nodeType":"VariableDeclaration","scope":2710,"src":"817:18:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2704,"name":"bytes4","nodeType":"ElementaryTypeName","src":"817:6:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"816:20:16"},"returnParameters":{"id":2709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2710,"src":"860:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2707,"name":"bool","nodeType":"ElementaryTypeName","src":"860:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"859:6:16"},"scope":2711,"src":"790:76:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2712,"src":"421:447:16","usedErrors":[],"usedEvents":[]}],"src":"115:754:16"},"id":16},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[3765]},"id":3766,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2713,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":2714,"nodeType":"StructuredDocumentation","src":"129:73:17","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3765,"linearizedBaseContracts":[3765],"name":"Math","nameLocation":"211:4:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2715,"nodeType":"StructuredDocumentation","src":"222:50:17","text":" @dev Muldiv operation overflow."},"errorSelector":"227bc153","id":2717,"name":"MathOverflowedMulDiv","nameLocation":"283:20:17","nodeType":"ErrorDefinition","parameters":{"id":2716,"nodeType":"ParameterList","parameters":[],"src":"303:2:17"},"src":"277:29:17"},{"canonicalName":"Math.Rounding","id":2722,"members":[{"id":2718,"name":"Floor","nameLocation":"336:5:17","nodeType":"EnumValue","src":"336:5:17"},{"id":2719,"name":"Ceil","nameLocation":"379:4:17","nodeType":"EnumValue","src":"379:4:17"},{"id":2720,"name":"Trunc","nameLocation":"421:5:17","nodeType":"EnumValue","src":"421:5:17"},{"id":2721,"name":"Expand","nameLocation":"451:6:17","nodeType":"EnumValue","src":"451:6:17"}],"name":"Rounding","nameLocation":"317:8:17","nodeType":"EnumDefinition","src":"312:169:17"},{"body":{"id":2753,"nodeType":"Block","src":"661:140:17","statements":[{"id":2752,"nodeType":"UncheckedBlock","src":"671:124:17","statements":[{"assignments":[2735],"declarations":[{"constant":false,"id":2735,"mutability":"mutable","name":"c","nameLocation":"703:1:17","nodeType":"VariableDeclaration","scope":2752,"src":"695:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2734,"name":"uint256","nodeType":"ElementaryTypeName","src":"695:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2739,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2736,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"707:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2737,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2727,"src":"711:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"707:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"695:17:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2740,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2735,"src":"730:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2741,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"734:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"730:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2747,"nodeType":"IfStatement","src":"726:28:17","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"745:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"752:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"744:10:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2733,"id":2746,"nodeType":"Return","src":"737:17:17"}},{"expression":{"components":[{"hexValue":"74727565","id":2748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"776:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2749,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2735,"src":"782:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2750,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"775:9:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2733,"id":2751,"nodeType":"Return","src":"768:16:17"}]}]},"documentation":{"id":2723,"nodeType":"StructuredDocumentation","src":"487:93:17","text":" @dev Returns the addition of two unsigned integers, with an overflow flag."},"id":2754,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"594:6:17","nodeType":"FunctionDefinition","parameters":{"id":2728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2725,"mutability":"mutable","name":"a","nameLocation":"609:1:17","nodeType":"VariableDeclaration","scope":2754,"src":"601:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2724,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2727,"mutability":"mutable","name":"b","nameLocation":"620:1:17","nodeType":"VariableDeclaration","scope":2754,"src":"612:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2726,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:17"},"returnParameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2754,"src":"646:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2729,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2754,"src":"652:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2731,"name":"uint256","nodeType":"ElementaryTypeName","src":"652:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:15:17"},"scope":3765,"src":"585:216:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2781,"nodeType":"Block","src":"984:113:17","statements":[{"id":2780,"nodeType":"UncheckedBlock","src":"994:97:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2766,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2759,"src":"1022:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2767,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"1026:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1022:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2773,"nodeType":"IfStatement","src":"1018:28:17","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1037:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2771,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1036:10:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2765,"id":2772,"nodeType":"Return","src":"1029:17:17"}},{"expression":{"components":[{"hexValue":"74727565","id":2774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1068:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2775,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2757,"src":"1074:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2776,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2759,"src":"1078:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1074:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1067:13:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2765,"id":2779,"nodeType":"Return","src":"1060:20:17"}]}]},"documentation":{"id":2755,"nodeType":"StructuredDocumentation","src":"807:96:17","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag."},"id":2782,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"917:6:17","nodeType":"FunctionDefinition","parameters":{"id":2760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2757,"mutability":"mutable","name":"a","nameLocation":"932:1:17","nodeType":"VariableDeclaration","scope":2782,"src":"924:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2756,"name":"uint256","nodeType":"ElementaryTypeName","src":"924:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2759,"mutability":"mutable","name":"b","nameLocation":"943:1:17","nodeType":"VariableDeclaration","scope":2782,"src":"935:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2758,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"923:22:17"},"returnParameters":{"id":2765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2762,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2782,"src":"969:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2761,"name":"bool","nodeType":"ElementaryTypeName","src":"969:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2782,"src":"975:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2763,"name":"uint256","nodeType":"ElementaryTypeName","src":"975:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"968:15:17"},"scope":3765,"src":"908:189:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2823,"nodeType":"Block","src":"1283:417:17","statements":[{"id":2822,"nodeType":"UncheckedBlock","src":"1293:401:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2794,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"1551:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1556:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1551:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2801,"nodeType":"IfStatement","src":"1547:28:17","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":2797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1567:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":2798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1573:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2799,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1566:9:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2793,"id":2800,"nodeType":"Return","src":"1559:16:17"}},{"assignments":[2803],"declarations":[{"constant":false,"id":2803,"mutability":"mutable","name":"c","nameLocation":"1597:1:17","nodeType":"VariableDeclaration","scope":2822,"src":"1589:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2802,"name":"uint256","nodeType":"ElementaryTypeName","src":"1589:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2807,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2804,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"1601:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2805,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2787,"src":"1605:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1601:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1589:17:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2808,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"1624:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2809,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2785,"src":"1628:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2811,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2787,"src":"1633:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1624:10:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2817,"nodeType":"IfStatement","src":"1620:33:17","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1644:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1651:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2815,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1643:10:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2793,"id":2816,"nodeType":"Return","src":"1636:17:17"}},{"expression":{"components":[{"hexValue":"74727565","id":2818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1675:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2819,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"1681:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2820,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1674:9:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2793,"id":2821,"nodeType":"Return","src":"1667:16:17"}]}]},"documentation":{"id":2783,"nodeType":"StructuredDocumentation","src":"1103:99:17","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag."},"id":2824,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1216:6:17","nodeType":"FunctionDefinition","parameters":{"id":2788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2785,"mutability":"mutable","name":"a","nameLocation":"1231:1:17","nodeType":"VariableDeclaration","scope":2824,"src":"1223:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2784,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2787,"mutability":"mutable","name":"b","nameLocation":"1242:1:17","nodeType":"VariableDeclaration","scope":2824,"src":"1234:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2786,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1222:22:17"},"returnParameters":{"id":2793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2824,"src":"1268:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2789,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2792,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2824,"src":"1274:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2791,"name":"uint256","nodeType":"ElementaryTypeName","src":"1274:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1267:15:17"},"scope":3765,"src":"1207:493:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2851,"nodeType":"Block","src":"1887:114:17","statements":[{"id":2850,"nodeType":"UncheckedBlock","src":"1897:98:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2836,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2829,"src":"1925:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1930:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2843,"nodeType":"IfStatement","src":"1921:29:17","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1941:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1948:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2841,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1940:10:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2835,"id":2842,"nodeType":"Return","src":"1933:17:17"}},{"expression":{"components":[{"hexValue":"74727565","id":2844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1972:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2845,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"1978:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2846,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2829,"src":"1982:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1978:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2848,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1971:13:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2835,"id":2849,"nodeType":"Return","src":"1964:20:17"}]}]},"documentation":{"id":2825,"nodeType":"StructuredDocumentation","src":"1706:100:17","text":" @dev Returns the division of two unsigned integers, with a division by zero flag."},"id":2852,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1820:6:17","nodeType":"FunctionDefinition","parameters":{"id":2830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2827,"mutability":"mutable","name":"a","nameLocation":"1835:1:17","nodeType":"VariableDeclaration","scope":2852,"src":"1827:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2826,"name":"uint256","nodeType":"ElementaryTypeName","src":"1827:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2829,"mutability":"mutable","name":"b","nameLocation":"1846:1:17","nodeType":"VariableDeclaration","scope":2852,"src":"1838:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2828,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1826:22:17"},"returnParameters":{"id":2835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2852,"src":"1872:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2831,"name":"bool","nodeType":"ElementaryTypeName","src":"1872:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2852,"src":"1878:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2833,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1871:15:17"},"scope":3765,"src":"1811:190:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2879,"nodeType":"Block","src":"2198:114:17","statements":[{"id":2878,"nodeType":"UncheckedBlock","src":"2208:98:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2864,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"2236:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2241:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2871,"nodeType":"IfStatement","src":"2232:29:17","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2252:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2259:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2869,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2251:10:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2863,"id":2870,"nodeType":"Return","src":"2244:17:17"}},{"expression":{"components":[{"hexValue":"74727565","id":2872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2283:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2873,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"2289:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":2874,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"2293:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2289:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2876,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2282:13:17","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2863,"id":2877,"nodeType":"Return","src":"2275:20:17"}]}]},"documentation":{"id":2853,"nodeType":"StructuredDocumentation","src":"2007:110:17","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag."},"id":2880,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2131:6:17","nodeType":"FunctionDefinition","parameters":{"id":2858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2855,"mutability":"mutable","name":"a","nameLocation":"2146:1:17","nodeType":"VariableDeclaration","scope":2880,"src":"2138:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2854,"name":"uint256","nodeType":"ElementaryTypeName","src":"2138:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2857,"mutability":"mutable","name":"b","nameLocation":"2157:1:17","nodeType":"VariableDeclaration","scope":2880,"src":"2149:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2856,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2137:22:17"},"returnParameters":{"id":2863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2860,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2880,"src":"2183:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2859,"name":"bool","nodeType":"ElementaryTypeName","src":"2183:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2862,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2880,"src":"2189:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2861,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2182:15:17"},"scope":3765,"src":"2122:190:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2897,"nodeType":"Block","src":"2449:37:17","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2890,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"2466:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2891,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2885,"src":"2470:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2466:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2894,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2885,"src":"2478:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2466:13:17","trueExpression":{"id":2893,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"2474:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2889,"id":2896,"nodeType":"Return","src":"2459:20:17"}]},"documentation":{"id":2881,"nodeType":"StructuredDocumentation","src":"2318:59:17","text":" @dev Returns the largest of two numbers."},"id":2898,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"2391:3:17","nodeType":"FunctionDefinition","parameters":{"id":2886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2883,"mutability":"mutable","name":"a","nameLocation":"2403:1:17","nodeType":"VariableDeclaration","scope":2898,"src":"2395:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2882,"name":"uint256","nodeType":"ElementaryTypeName","src":"2395:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2885,"mutability":"mutable","name":"b","nameLocation":"2414:1:17","nodeType":"VariableDeclaration","scope":2898,"src":"2406:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2884,"name":"uint256","nodeType":"ElementaryTypeName","src":"2406:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2394:22:17"},"returnParameters":{"id":2889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2888,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2898,"src":"2440:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2887,"name":"uint256","nodeType":"ElementaryTypeName","src":"2440:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:9:17"},"scope":3765,"src":"2382:104:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2915,"nodeType":"Block","src":"2624:37:17","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2908,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2901,"src":"2641:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2909,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2903,"src":"2645:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2641:5:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2912,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2903,"src":"2653:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2641:13:17","trueExpression":{"id":2911,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2901,"src":"2649:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2907,"id":2914,"nodeType":"Return","src":"2634:20:17"}]},"documentation":{"id":2899,"nodeType":"StructuredDocumentation","src":"2492:60:17","text":" @dev Returns the smallest of two numbers."},"id":2916,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"2566:3:17","nodeType":"FunctionDefinition","parameters":{"id":2904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2901,"mutability":"mutable","name":"a","nameLocation":"2578:1:17","nodeType":"VariableDeclaration","scope":2916,"src":"2570:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2903,"mutability":"mutable","name":"b","nameLocation":"2589:1:17","nodeType":"VariableDeclaration","scope":2916,"src":"2581:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2902,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2569:22:17"},"returnParameters":{"id":2907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2916,"src":"2615:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2905,"name":"uint256","nodeType":"ElementaryTypeName","src":"2615:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2614:9:17"},"scope":3765,"src":"2557:104:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2938,"nodeType":"Block","src":"2845:82:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2926,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2919,"src":"2900:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2927,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"2904:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2900:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2929,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2899:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2930,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2919,"src":"2910:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2931,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2921,"src":"2914:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2910:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2933,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2909:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":2934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2919:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2909:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2899:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2925,"id":2937,"nodeType":"Return","src":"2892:28:17"}]},"documentation":{"id":2917,"nodeType":"StructuredDocumentation","src":"2667:102:17","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":2939,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"2783:7:17","nodeType":"FunctionDefinition","parameters":{"id":2922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2919,"mutability":"mutable","name":"a","nameLocation":"2799:1:17","nodeType":"VariableDeclaration","scope":2939,"src":"2791:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2918,"name":"uint256","nodeType":"ElementaryTypeName","src":"2791:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2921,"mutability":"mutable","name":"b","nameLocation":"2810:1:17","nodeType":"VariableDeclaration","scope":2939,"src":"2802:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2920,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2790:22:17"},"returnParameters":{"id":2925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2939,"src":"2836:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2923,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2835:9:17"},"scope":3765,"src":"2774:153:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2972,"nodeType":"Block","src":"3219:260:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2949,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"3233:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3238:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3233:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2957,"nodeType":"IfStatement","src":"3229:127:17","trueBody":{"id":2956,"nodeType":"Block","src":"3241:115:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2952,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3340:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2953,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"3344:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3340:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2948,"id":2955,"nodeType":"Return","src":"3333:12:17"}]}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2958,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3444:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3449:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3444:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2962,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3458:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3458:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2965,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3457:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2966,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"3467:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3457:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3471:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3457:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3444:28:17","trueExpression":{"hexValue":"30","id":2961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2948,"id":2971,"nodeType":"Return","src":"3437:35:17"}]},"documentation":{"id":2940,"nodeType":"StructuredDocumentation","src":"2933:210:17","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."},"id":2973,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3157:7:17","nodeType":"FunctionDefinition","parameters":{"id":2945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2942,"mutability":"mutable","name":"a","nameLocation":"3173:1:17","nodeType":"VariableDeclaration","scope":2973,"src":"3165:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2941,"name":"uint256","nodeType":"ElementaryTypeName","src":"3165:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2944,"mutability":"mutable","name":"b","nameLocation":"3184:1:17","nodeType":"VariableDeclaration","scope":2973,"src":"3176:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2943,"name":"uint256","nodeType":"ElementaryTypeName","src":"3176:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3164:22:17"},"returnParameters":{"id":2948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2973,"src":"3210:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2946,"name":"uint256","nodeType":"ElementaryTypeName","src":"3210:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3209:9:17"},"scope":3765,"src":"3148:331:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3098,"nodeType":"Block","src":"3901:4018:17","statements":[{"id":3097,"nodeType":"UncheckedBlock","src":"3911:4002:17","statements":[{"assignments":[2986],"declarations":[{"constant":false,"id":2986,"mutability":"mutable","name":"prod0","nameLocation":"4240:5:17","nodeType":"VariableDeclaration","scope":3097,"src":"4232:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2985,"name":"uint256","nodeType":"ElementaryTypeName","src":"4232:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2990,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2987,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"4248:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2988,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"4252:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4248:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4232:21:17"},{"assignments":[2992],"declarations":[{"constant":false,"id":2992,"mutability":"mutable","name":"prod1","nameLocation":"4320:5:17","nodeType":"VariableDeclaration","scope":3097,"src":"4312:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2991,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2993,"nodeType":"VariableDeclarationStatement","src":"4312:13:17"},{"AST":{"nodeType":"YulBlock","src":"4392:122:17","statements":[{"nodeType":"YulVariableDeclaration","src":"4410:30:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4427:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"4430:1:17"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4437:1:17","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4433:3:17"},"nodeType":"YulFunctionCall","src":"4433:6:17"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"4420:6:17"},"nodeType":"YulFunctionCall","src":"4420:20:17"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"4414:2:17","type":""}]},{"nodeType":"YulAssignment","src":"4457:43:17","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"4474:2:17"},{"name":"prod0","nodeType":"YulIdentifier","src":"4478:5:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4470:3:17"},"nodeType":"YulFunctionCall","src":"4470:14:17"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"4489:2:17"},{"name":"prod0","nodeType":"YulIdentifier","src":"4493:5:17"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4486:2:17"},"nodeType":"YulFunctionCall","src":"4486:13:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4466:3:17"},"nodeType":"YulFunctionCall","src":"4466:34:17"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"4457:5:17"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2986,"isOffset":false,"isSlot":false,"src":"4478:5:17","valueSize":1},{"declaration":2986,"isOffset":false,"isSlot":false,"src":"4493:5:17","valueSize":1},{"declaration":2992,"isOffset":false,"isSlot":false,"src":"4457:5:17","valueSize":1},{"declaration":2976,"isOffset":false,"isSlot":false,"src":"4427:1:17","valueSize":1},{"declaration":2978,"isOffset":false,"isSlot":false,"src":"4430:1:17","valueSize":1}],"id":2994,"nodeType":"InlineAssembly","src":"4383:131:17"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2995,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2992,"src":"4595:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4595:10:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3003,"nodeType":"IfStatement","src":"4591:368:17","trueBody":{"id":3002,"nodeType":"Block","src":"4607:352:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2998,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2986,"src":"4925:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2999,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"4933:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2984,"id":3001,"nodeType":"Return","src":"4918:26:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3004,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"5065:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3005,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2992,"src":"5080:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:20:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3011,"nodeType":"IfStatement","src":"5061:88:17","trueBody":{"id":3010,"nodeType":"Block","src":"5087:62:17","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3007,"name":"MathOverflowedMulDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2717,"src":"5112:20:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":3008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5112:22:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3009,"nodeType":"RevertStatement","src":"5105:29:17"}]}},{"assignments":[3013],"declarations":[{"constant":false,"id":3013,"mutability":"mutable","name":"remainder","nameLocation":"5412:9:17","nodeType":"VariableDeclaration","scope":3097,"src":"5404:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3012,"name":"uint256","nodeType":"ElementaryTypeName","src":"5404:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3014,"nodeType":"VariableDeclarationStatement","src":"5404:17:17"},{"AST":{"nodeType":"YulBlock","src":"5444:291:17","statements":[{"nodeType":"YulAssignment","src":"5513:38:17","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"5533:1:17"},{"name":"y","nodeType":"YulIdentifier","src":"5536:1:17"},{"name":"denominator","nodeType":"YulIdentifier","src":"5539:11:17"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"5526:6:17"},"nodeType":"YulFunctionCall","src":"5526:25:17"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"5513:9:17"}]},{"nodeType":"YulAssignment","src":"5633:41:17","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"5646:5:17"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"5656:9:17"},{"name":"prod0","nodeType":"YulIdentifier","src":"5667:5:17"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5653:2:17"},"nodeType":"YulFunctionCall","src":"5653:20:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5642:3:17"},"nodeType":"YulFunctionCall","src":"5642:32:17"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"5633:5:17"}]},{"nodeType":"YulAssignment","src":"5691:30:17","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"5704:5:17"},{"name":"remainder","nodeType":"YulIdentifier","src":"5711:9:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5700:3:17"},"nodeType":"YulFunctionCall","src":"5700:21:17"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"5691:5:17"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2980,"isOffset":false,"isSlot":false,"src":"5539:11:17","valueSize":1},{"declaration":2986,"isOffset":false,"isSlot":false,"src":"5667:5:17","valueSize":1},{"declaration":2986,"isOffset":false,"isSlot":false,"src":"5691:5:17","valueSize":1},{"declaration":2986,"isOffset":false,"isSlot":false,"src":"5704:5:17","valueSize":1},{"declaration":2992,"isOffset":false,"isSlot":false,"src":"5633:5:17","valueSize":1},{"declaration":2992,"isOffset":false,"isSlot":false,"src":"5646:5:17","valueSize":1},{"declaration":3013,"isOffset":false,"isSlot":false,"src":"5513:9:17","valueSize":1},{"declaration":3013,"isOffset":false,"isSlot":false,"src":"5656:9:17","valueSize":1},{"declaration":3013,"isOffset":false,"isSlot":false,"src":"5711:9:17","valueSize":1},{"declaration":2976,"isOffset":false,"isSlot":false,"src":"5533:1:17","valueSize":1},{"declaration":2978,"isOffset":false,"isSlot":false,"src":"5536:1:17","valueSize":1}],"id":3015,"nodeType":"InlineAssembly","src":"5435:300:17"},{"assignments":[3017],"declarations":[{"constant":false,"id":3017,"mutability":"mutable","name":"twos","nameLocation":"5947:4:17","nodeType":"VariableDeclaration","scope":3097,"src":"5939:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3016,"name":"uint256","nodeType":"ElementaryTypeName","src":"5939:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3024,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3018,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"5954:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":3019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5969:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3020,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"5973:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5969:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3022,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5968:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5954:31:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5939:46:17"},{"AST":{"nodeType":"YulBlock","src":"6008:362:17","statements":[{"nodeType":"YulAssignment","src":"6073:37:17","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"6092:11:17"},{"name":"twos","nodeType":"YulIdentifier","src":"6105:4:17"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6088:3:17"},"nodeType":"YulFunctionCall","src":"6088:22:17"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"6073:11:17"}]},{"nodeType":"YulAssignment","src":"6177:25:17","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"6190:5:17"},{"name":"twos","nodeType":"YulIdentifier","src":"6197:4:17"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6186:3:17"},"nodeType":"YulFunctionCall","src":"6186:16:17"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"6177:5:17"}]},{"nodeType":"YulAssignment","src":"6317:39:17","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6337:1:17","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"6340:4:17"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6333:3:17"},"nodeType":"YulFunctionCall","src":"6333:12:17"},{"name":"twos","nodeType":"YulIdentifier","src":"6347:4:17"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"6329:3:17"},"nodeType":"YulFunctionCall","src":"6329:23:17"},{"kind":"number","nodeType":"YulLiteral","src":"6354:1:17","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6325:3:17"},"nodeType":"YulFunctionCall","src":"6325:31:17"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"6317:4:17"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2980,"isOffset":false,"isSlot":false,"src":"6073:11:17","valueSize":1},{"declaration":2980,"isOffset":false,"isSlot":false,"src":"6092:11:17","valueSize":1},{"declaration":2986,"isOffset":false,"isSlot":false,"src":"6177:5:17","valueSize":1},{"declaration":2986,"isOffset":false,"isSlot":false,"src":"6190:5:17","valueSize":1},{"declaration":3017,"isOffset":false,"isSlot":false,"src":"6105:4:17","valueSize":1},{"declaration":3017,"isOffset":false,"isSlot":false,"src":"6197:4:17","valueSize":1},{"declaration":3017,"isOffset":false,"isSlot":false,"src":"6317:4:17","valueSize":1},{"declaration":3017,"isOffset":false,"isSlot":false,"src":"6340:4:17","valueSize":1},{"declaration":3017,"isOffset":false,"isSlot":false,"src":"6347:4:17","valueSize":1}],"id":3025,"nodeType":"InlineAssembly","src":"5999:371:17"},{"expression":{"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3026,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2986,"src":"6436:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3027,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2992,"src":"6445:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3028,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3017,"src":"6453:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6445:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3031,"nodeType":"ExpressionStatement","src":"6436:21:17"},{"assignments":[3033],"declarations":[{"constant":false,"id":3033,"mutability":"mutable","name":"inverse","nameLocation":"6783:7:17","nodeType":"VariableDeclaration","scope":3097,"src":"6775:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3032,"name":"uint256","nodeType":"ElementaryTypeName","src":"6775:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3040,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":3034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6794:1:17","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3035,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"6798:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6794:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3037,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6793:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":3038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6813:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6793:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6775:39:17"},{"expression":{"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3041,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7031:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7042:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3043,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"7046:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3044,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7060:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7046:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7042:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7031:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3048,"nodeType":"ExpressionStatement","src":"7031:36:17"},{"expression":{"id":3055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3049,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7100:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7111:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3051,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"7115:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3052,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7129:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7111:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7100:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3056,"nodeType":"ExpressionStatement","src":"7100:36:17"},{"expression":{"id":3063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3057,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7170:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7181:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3059,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"7185:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3060,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7199:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7185:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7181:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7170:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3064,"nodeType":"ExpressionStatement","src":"7170:36:17"},{"expression":{"id":3071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3065,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7240:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7251:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3067,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"7255:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3068,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7269:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7255:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7251:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7240:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3072,"nodeType":"ExpressionStatement","src":"7240:36:17"},{"expression":{"id":3079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3073,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7310:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3075,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"7325:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3076,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7339:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7325:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7321:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7310:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3080,"nodeType":"ExpressionStatement","src":"7310:36:17"},{"expression":{"id":3087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3081,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7381:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7392:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3083,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"7396:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3084,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7410:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7396:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7392:25:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7381:36:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3088,"nodeType":"ExpressionStatement","src":"7381:36:17"},{"expression":{"id":3093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3089,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2983,"src":"7851:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3090,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2986,"src":"7860:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3091,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"7868:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7851:24:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3094,"nodeType":"ExpressionStatement","src":"7851:24:17"},{"expression":{"id":3095,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2983,"src":"7896:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2984,"id":3096,"nodeType":"Return","src":"7889:13:17"}]}]},"documentation":{"id":2974,"nodeType":"StructuredDocumentation","src":"3485:313:17","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."},"id":3099,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"3812:6:17","nodeType":"FunctionDefinition","parameters":{"id":2981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2976,"mutability":"mutable","name":"x","nameLocation":"3827:1:17","nodeType":"VariableDeclaration","scope":3099,"src":"3819:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2975,"name":"uint256","nodeType":"ElementaryTypeName","src":"3819:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2978,"mutability":"mutable","name":"y","nameLocation":"3838:1:17","nodeType":"VariableDeclaration","scope":3099,"src":"3830:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2977,"name":"uint256","nodeType":"ElementaryTypeName","src":"3830:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2980,"mutability":"mutable","name":"denominator","nameLocation":"3849:11:17","nodeType":"VariableDeclaration","scope":3099,"src":"3841:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2979,"name":"uint256","nodeType":"ElementaryTypeName","src":"3841:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3818:43:17"},"returnParameters":{"id":2984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2983,"mutability":"mutable","name":"result","nameLocation":"3893:6:17","nodeType":"VariableDeclaration","scope":3099,"src":"3885:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2982,"name":"uint256","nodeType":"ElementaryTypeName","src":"3885:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3884:16:17"},"scope":3765,"src":"3803:4116:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3141,"nodeType":"Block","src":"8161:192:17","statements":[{"assignments":[3115],"declarations":[{"constant":false,"id":3115,"mutability":"mutable","name":"result","nameLocation":"8179:6:17","nodeType":"VariableDeclaration","scope":3141,"src":"8171:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3114,"name":"uint256","nodeType":"ElementaryTypeName","src":"8171:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3121,"initialValue":{"arguments":[{"id":3117,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"8195:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3118,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"8198:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3119,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3106,"src":"8201:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3116,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[3099,3142],"referencedDeclaration":3099,"src":"8188:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8188:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8171:42:17"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3123,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3109,"src":"8244:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}],"id":3122,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3764,"src":"8227:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2722_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8227:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3126,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"8264:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3127,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"8267:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3128,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3106,"src":"8270:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3125,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"8257:6:17","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8257:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8285:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8257:29:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8227:59:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3138,"nodeType":"IfStatement","src":"8223:101:17","trueBody":{"id":3137,"nodeType":"Block","src":"8288:36:17","statements":[{"expression":{"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3133,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"8302:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8312:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3136,"nodeType":"ExpressionStatement","src":"8302:11:17"}]}},{"expression":{"id":3139,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"8340:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3113,"id":3140,"nodeType":"Return","src":"8333:13:17"}]},"documentation":{"id":3100,"nodeType":"StructuredDocumentation","src":"7925:121:17","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":3142,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"8060:6:17","nodeType":"FunctionDefinition","parameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3102,"mutability":"mutable","name":"x","nameLocation":"8075:1:17","nodeType":"VariableDeclaration","scope":3142,"src":"8067:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3101,"name":"uint256","nodeType":"ElementaryTypeName","src":"8067:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3104,"mutability":"mutable","name":"y","nameLocation":"8086:1:17","nodeType":"VariableDeclaration","scope":3142,"src":"8078:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3103,"name":"uint256","nodeType":"ElementaryTypeName","src":"8078:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3106,"mutability":"mutable","name":"denominator","nameLocation":"8097:11:17","nodeType":"VariableDeclaration","scope":3142,"src":"8089:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3105,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3109,"mutability":"mutable","name":"rounding","nameLocation":"8119:8:17","nodeType":"VariableDeclaration","scope":3142,"src":"8110:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"},"typeName":{"id":3108,"nodeType":"UserDefinedTypeName","pathNode":{"id":3107,"name":"Rounding","nameLocations":["8110:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":2722,"src":"8110:8:17"},"referencedDeclaration":2722,"src":"8110:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8066:62:17"},"returnParameters":{"id":3113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3142,"src":"8152:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3111,"name":"uint256","nodeType":"ElementaryTypeName","src":"8152:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8151:9:17"},"scope":3765,"src":"8051:302:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3253,"nodeType":"Block","src":"8644:1585:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3150,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"8658:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8663:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8658:6:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3156,"nodeType":"IfStatement","src":"8654:45:17","trueBody":{"id":3155,"nodeType":"Block","src":"8666:33:17","statements":[{"expression":{"hexValue":"30","id":3153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":3149,"id":3154,"nodeType":"Return","src":"8680:8:17"}]}},{"assignments":[3158],"declarations":[{"constant":false,"id":3158,"mutability":"mutable","name":"result","nameLocation":"9386:6:17","nodeType":"VariableDeclaration","scope":3253,"src":"9378:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3157,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3167,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9395:1:17","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":3164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3161,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"9406:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3160,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3421,3456],"referencedDeclaration":3421,"src":"9401:4:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:7:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9401:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3165,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9400:14:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9395:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9378:36:17"},{"id":3252,"nodeType":"UncheckedBlock","src":"9815:408:17","statements":[{"expression":{"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3168,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9839:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3169,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9849:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3170,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"9858:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3171,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9862:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9849:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3174,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9848:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9873:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9848:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9839:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3178,"nodeType":"ExpressionStatement","src":"9839:35:17"},{"expression":{"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3179,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9888:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3180,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9898:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3181,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"9907:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3182,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9911:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9907:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9898:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3185,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9897:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9922:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9897:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9888:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3189,"nodeType":"ExpressionStatement","src":"9888:35:17"},{"expression":{"id":3199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3190,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9937:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3191,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9947:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3192,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"9956:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3193,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9960:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9956:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9947:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3196,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9946:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9971:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9946:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9937:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3200,"nodeType":"ExpressionStatement","src":"9937:35:17"},{"expression":{"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3201,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9986:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3202,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"9996:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3203,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10005:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3204,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10009:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10005:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9996:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3207,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9995:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10020:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9995:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9986:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3211,"nodeType":"ExpressionStatement","src":"9986:35:17"},{"expression":{"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3212,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10035:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3213,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10045:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3214,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10054:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3215,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10058:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10054:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10045:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3218,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10044:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10069:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10044:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10035:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3222,"nodeType":"ExpressionStatement","src":"10035:35:17"},{"expression":{"id":3232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3223,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10084:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3224,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10094:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3225,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10103:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3226,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10107:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10094:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3229,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10093:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10118:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10093:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10084:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3233,"nodeType":"ExpressionStatement","src":"10084:35:17"},{"expression":{"id":3243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3234,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10133:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3235,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10143:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3236,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10152:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3237,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10156:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10152:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10143:19:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3240,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10142:21:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10167:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10142:26:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10133:35:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3244,"nodeType":"ExpressionStatement","src":"10133:35:17"},{"expression":{"arguments":[{"id":3246,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10193:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3247,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"10201:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3248,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"10205:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10201:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3245,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"10189:3:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:23:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3149,"id":3251,"nodeType":"Return","src":"10182:30:17"}]}]},"documentation":{"id":3143,"nodeType":"StructuredDocumentation","src":"8359:223:17","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)."},"id":3254,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:17","nodeType":"FunctionDefinition","parameters":{"id":3146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3145,"mutability":"mutable","name":"a","nameLocation":"8609:1:17","nodeType":"VariableDeclaration","scope":3254,"src":"8601:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3144,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:11:17"},"returnParameters":{"id":3149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3148,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3254,"src":"8635:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3147,"name":"uint256","nodeType":"ElementaryTypeName","src":"8635:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8634:9:17"},"scope":3765,"src":"8587:1642:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3288,"nodeType":"Block","src":"10405:164:17","statements":[{"id":3287,"nodeType":"UncheckedBlock","src":"10415:148:17","statements":[{"assignments":[3266],"declarations":[{"constant":false,"id":3266,"mutability":"mutable","name":"result","nameLocation":"10447:6:17","nodeType":"VariableDeclaration","scope":3287,"src":"10439:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3265,"name":"uint256","nodeType":"ElementaryTypeName","src":"10439:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3270,"initialValue":{"arguments":[{"id":3268,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3257,"src":"10461:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3267,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[3254,3289],"referencedDeclaration":3254,"src":"10456:4:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10456:7:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10439:24:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3266,"src":"10484:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3273,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3260,"src":"10511:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}],"id":3272,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3764,"src":"10494:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2722_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10494:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3275,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3266,"src":"10524:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3276,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3266,"src":"10533:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:15:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3278,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3257,"src":"10542:1:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10524:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10494:49:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10550:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10494:57:17","trueExpression":{"hexValue":"31","id":3281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10546:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3284,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10493:59:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10484:68:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3264,"id":3286,"nodeType":"Return","src":"10477:75:17"}]}]},"documentation":{"id":3255,"nodeType":"StructuredDocumentation","src":"10235:89:17","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":3289,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"10338:4:17","nodeType":"FunctionDefinition","parameters":{"id":3261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3257,"mutability":"mutable","name":"a","nameLocation":"10351:1:17","nodeType":"VariableDeclaration","scope":3289,"src":"10343:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3256,"name":"uint256","nodeType":"ElementaryTypeName","src":"10343:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3260,"mutability":"mutable","name":"rounding","nameLocation":"10363:8:17","nodeType":"VariableDeclaration","scope":3289,"src":"10354:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"},"typeName":{"id":3259,"nodeType":"UserDefinedTypeName","pathNode":{"id":3258,"name":"Rounding","nameLocations":["10354:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":2722,"src":"10354:8:17"},"referencedDeclaration":2722,"src":"10354:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10342:30:17"},"returnParameters":{"id":3264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3289,"src":"10396:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3262,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10395:9:17"},"scope":3765,"src":"10329:240:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3420,"nodeType":"Block","src":"10760:922:17","statements":[{"assignments":[3298],"declarations":[{"constant":false,"id":3298,"mutability":"mutable","name":"result","nameLocation":"10778:6:17","nodeType":"VariableDeclaration","scope":3420,"src":"10770:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3297,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3300,"initialValue":{"hexValue":"30","id":3299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10787:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10770:18:17"},{"id":3417,"nodeType":"UncheckedBlock","src":"10798:855:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3301,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"10826:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10835:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10826:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10841:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10826:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3315,"nodeType":"IfStatement","src":"10822:99:17","trueBody":{"id":3314,"nodeType":"Block","src":"10844:77:17","statements":[{"expression":{"id":3308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3306,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"10862:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10872:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10862:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3309,"nodeType":"ExpressionStatement","src":"10862:13:17"},{"expression":{"id":3312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3310,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"10893:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":3311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10903:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"10893:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3313,"nodeType":"ExpressionStatement","src":"10893:13:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3316,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"10938:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10947:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10938:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10952:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10938:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3330,"nodeType":"IfStatement","src":"10934:96:17","trueBody":{"id":3329,"nodeType":"Block","src":"10955:75:17","statements":[{"expression":{"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3321,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"10973:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10983:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10973:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3324,"nodeType":"ExpressionStatement","src":"10973:12:17"},{"expression":{"id":3327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3325,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"11003:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11013:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11003:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3328,"nodeType":"ExpressionStatement","src":"11003:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11047:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11056:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11047:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11061:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11047:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3345,"nodeType":"IfStatement","src":"11043:96:17","trueBody":{"id":3344,"nodeType":"Block","src":"11064:75:17","statements":[{"expression":{"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3336,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11082:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11092:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11082:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3339,"nodeType":"ExpressionStatement","src":"11082:12:17"},{"expression":{"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3340,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"11112:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11122:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11112:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3343,"nodeType":"ExpressionStatement","src":"11112:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3346,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11156:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11165:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11156:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11156:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3360,"nodeType":"IfStatement","src":"11152:96:17","trueBody":{"id":3359,"nodeType":"Block","src":"11173:75:17","statements":[{"expression":{"id":3353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3351,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11191:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11191:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3354,"nodeType":"ExpressionStatement","src":"11191:12:17"},{"expression":{"id":3357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3355,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"11221:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11231:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11221:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3358,"nodeType":"ExpressionStatement","src":"11221:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3361,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11265:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11274:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11265:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11278:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11265:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3375,"nodeType":"IfStatement","src":"11261:93:17","trueBody":{"id":3374,"nodeType":"Block","src":"11281:73:17","statements":[{"expression":{"id":3368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3366,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11299:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":3367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11309:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11299:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3369,"nodeType":"ExpressionStatement","src":"11299:11:17"},{"expression":{"id":3372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3370,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"11328:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11338:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11328:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3373,"nodeType":"ExpressionStatement","src":"11328:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11371:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":3377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11380:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11371:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11384:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11371:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3390,"nodeType":"IfStatement","src":"11367:93:17","trueBody":{"id":3389,"nodeType":"Block","src":"11387:73:17","statements":[{"expression":{"id":3383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11405:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":3382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11415:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11405:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3384,"nodeType":"ExpressionStatement","src":"11405:11:17"},{"expression":{"id":3387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3385,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"11434:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11444:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11434:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3388,"nodeType":"ExpressionStatement","src":"11434:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11477:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11486:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11477:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11490:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11477:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3405,"nodeType":"IfStatement","src":"11473:93:17","trueBody":{"id":3404,"nodeType":"Block","src":"11493:73:17","statements":[{"expression":{"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3396,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11511:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":3397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11521:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11511:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3399,"nodeType":"ExpressionStatement","src":"11511:11:17"},{"expression":{"id":3402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3400,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"11540:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11550:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11540:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3403,"nodeType":"ExpressionStatement","src":"11540:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3406,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3292,"src":"11583:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11592:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11583:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11596:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11583:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3416,"nodeType":"IfStatement","src":"11579:64:17","trueBody":{"id":3415,"nodeType":"Block","src":"11599:44:17","statements":[{"expression":{"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3411,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"11617:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11627:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11617:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3414,"nodeType":"ExpressionStatement","src":"11617:11:17"}]}}]},{"expression":{"id":3418,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"11669:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3296,"id":3419,"nodeType":"Return","src":"11662:13:17"}]},"documentation":{"id":3290,"nodeType":"StructuredDocumentation","src":"10575:119:17","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":3421,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"10708:4:17","nodeType":"FunctionDefinition","parameters":{"id":3293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3292,"mutability":"mutable","name":"value","nameLocation":"10721:5:17","nodeType":"VariableDeclaration","scope":3421,"src":"10713:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3291,"name":"uint256","nodeType":"ElementaryTypeName","src":"10713:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10712:15:17"},"returnParameters":{"id":3296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3421,"src":"10751:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3294,"name":"uint256","nodeType":"ElementaryTypeName","src":"10751:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10750:9:17"},"scope":3765,"src":"10699:983:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3455,"nodeType":"Block","src":"11915:168:17","statements":[{"id":3454,"nodeType":"UncheckedBlock","src":"11925:152:17","statements":[{"assignments":[3433],"declarations":[{"constant":false,"id":3433,"mutability":"mutable","name":"result","nameLocation":"11957:6:17","nodeType":"VariableDeclaration","scope":3454,"src":"11949:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3432,"name":"uint256","nodeType":"ElementaryTypeName","src":"11949:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3437,"initialValue":{"arguments":[{"id":3435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3424,"src":"11971:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3434,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[3421,3456],"referencedDeclaration":3421,"src":"11966:4:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11966:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11949:28:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3438,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"11998:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3440,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3427,"src":"12025:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}],"id":3439,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3764,"src":"12008:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2722_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12008:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":3443,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3433,"src":"12043:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3445,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3424,"src":"12052:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12038:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12008:49:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12064:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12008:57:17","trueExpression":{"hexValue":"31","id":3448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12060:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3451,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12007:59:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11998:68:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3431,"id":3453,"nodeType":"Return","src":"11991:75:17"}]}]},"documentation":{"id":3422,"nodeType":"StructuredDocumentation","src":"11688:142:17","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3456,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"11844:4:17","nodeType":"FunctionDefinition","parameters":{"id":3428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3424,"mutability":"mutable","name":"value","nameLocation":"11857:5:17","nodeType":"VariableDeclaration","scope":3456,"src":"11849:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3423,"name":"uint256","nodeType":"ElementaryTypeName","src":"11849:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3427,"mutability":"mutable","name":"rounding","nameLocation":"11873:8:17","nodeType":"VariableDeclaration","scope":3456,"src":"11864:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"},"typeName":{"id":3426,"nodeType":"UserDefinedTypeName","pathNode":{"id":3425,"name":"Rounding","nameLocations":["11864:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":2722,"src":"11864:8:17"},"referencedDeclaration":2722,"src":"11864:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11848:34:17"},"returnParameters":{"id":3431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3430,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3456,"src":"11906:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3429,"name":"uint256","nodeType":"ElementaryTypeName","src":"11906:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11905:9:17"},"scope":3765,"src":"11835:248:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3584,"nodeType":"Block","src":"12276:854:17","statements":[{"assignments":[3465],"declarations":[{"constant":false,"id":3465,"mutability":"mutable","name":"result","nameLocation":"12294:6:17","nodeType":"VariableDeclaration","scope":3584,"src":"12286:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3464,"name":"uint256","nodeType":"ElementaryTypeName","src":"12286:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3467,"initialValue":{"hexValue":"30","id":3466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12303:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12286:18:17"},{"id":3581,"nodeType":"UncheckedBlock","src":"12314:787:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3468,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12342:5:17","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":3471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12351:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12357:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12351:8:17","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12342:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3484,"nodeType":"IfStatement","src":"12338:103:17","trueBody":{"id":3483,"nodeType":"Block","src":"12361:80:17","statements":[{"expression":{"id":3477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12379:5:17","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":3476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12388:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":3475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12394:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12388:8:17","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"12379:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3478,"nodeType":"ExpressionStatement","src":"12379:17:17"},{"expression":{"id":3481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3479,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"12414:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":3480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12424:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"12414:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3482,"nodeType":"ExpressionStatement","src":"12414:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12458:5:17","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":3488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12467:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12473:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12467:8:17","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12458:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3501,"nodeType":"IfStatement","src":"12454:103:17","trueBody":{"id":3500,"nodeType":"Block","src":"12477:80:17","statements":[{"expression":{"id":3494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3490,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12495:5:17","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":3493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12504:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":3492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12510:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12504:8:17","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"12495:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3495,"nodeType":"ExpressionStatement","src":"12495:17:17"},{"expression":{"id":3498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3496,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"12530:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":3497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12540:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"12530:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3499,"nodeType":"ExpressionStatement","src":"12530:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3502,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12574:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12583:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12589:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12583:8:17","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12574:17:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3518,"nodeType":"IfStatement","src":"12570:103:17","trueBody":{"id":3517,"nodeType":"Block","src":"12593:80:17","statements":[{"expression":{"id":3511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3507,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12611:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":3510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12620:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":3509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12626:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12620:8:17","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"12611:17:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3512,"nodeType":"ExpressionStatement","src":"12611:17:17"},{"expression":{"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3513,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"12646:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12656:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"12646:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3516,"nodeType":"ExpressionStatement","src":"12646:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3519,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12690:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12699:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12705:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12699:7:17","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12690:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3535,"nodeType":"IfStatement","src":"12686:100:17","trueBody":{"id":3534,"nodeType":"Block","src":"12708:78:17","statements":[{"expression":{"id":3528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12726:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":3527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12735:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":3526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12741:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12735:7:17","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"12726:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3529,"nodeType":"ExpressionStatement","src":"12726:16:17"},{"expression":{"id":3532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3530,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"12760:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12770:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12760:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3533,"nodeType":"ExpressionStatement","src":"12760:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3536,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12803:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12812:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12818:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12812:7:17","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12803:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3552,"nodeType":"IfStatement","src":"12799:100:17","trueBody":{"id":3551,"nodeType":"Block","src":"12821:78:17","statements":[{"expression":{"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3541,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12839:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":3544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12848:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":3543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12854:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12848:7:17","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"12839:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3546,"nodeType":"ExpressionStatement","src":"12839:16:17"},{"expression":{"id":3549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3547,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"12873:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12883:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"12873:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3550,"nodeType":"ExpressionStatement","src":"12873:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12916:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12925:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12931:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12925:7:17","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12916:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3569,"nodeType":"IfStatement","src":"12912:100:17","trueBody":{"id":3568,"nodeType":"Block","src":"12934:78:17","statements":[{"expression":{"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"12952:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":3561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12961:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":3560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12967:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12961:7:17","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"12952:16:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3563,"nodeType":"ExpressionStatement","src":"12952:16:17"},{"expression":{"id":3566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3564,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"12986:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12996:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12986:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3567,"nodeType":"ExpressionStatement","src":"12986:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3570,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"13029:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":3573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13038:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":3572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13044:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13038:7:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"13029:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3580,"nodeType":"IfStatement","src":"13025:66:17","trueBody":{"id":3579,"nodeType":"Block","src":"13047:44:17","statements":[{"expression":{"id":3577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3575,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"13065:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13075:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13065:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3578,"nodeType":"ExpressionStatement","src":"13065:11:17"}]}}]},{"expression":{"id":3582,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"13117:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3463,"id":3583,"nodeType":"Return","src":"13110:13:17"}]},"documentation":{"id":3457,"nodeType":"StructuredDocumentation","src":"12089:120:17","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":3585,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"12223:5:17","nodeType":"FunctionDefinition","parameters":{"id":3460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3459,"mutability":"mutable","name":"value","nameLocation":"12237:5:17","nodeType":"VariableDeclaration","scope":3585,"src":"12229:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3458,"name":"uint256","nodeType":"ElementaryTypeName","src":"12229:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12228:15:17"},"returnParameters":{"id":3463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3462,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3585,"src":"12267:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3461,"name":"uint256","nodeType":"ElementaryTypeName","src":"12267:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12266:9:17"},"scope":3765,"src":"12214:916:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3619,"nodeType":"Block","src":"13365:170:17","statements":[{"id":3618,"nodeType":"UncheckedBlock","src":"13375:154:17","statements":[{"assignments":[3597],"declarations":[{"constant":false,"id":3597,"mutability":"mutable","name":"result","nameLocation":"13407:6:17","nodeType":"VariableDeclaration","scope":3618,"src":"13399:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3596,"name":"uint256","nodeType":"ElementaryTypeName","src":"13399:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3601,"initialValue":{"arguments":[{"id":3599,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"13422:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3598,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[3585,3620],"referencedDeclaration":3585,"src":"13416:5:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13416:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13399:29:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3602,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3597,"src":"13449:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3604,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3591,"src":"13476:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}],"id":3603,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3764,"src":"13459:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2722_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":3606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13489:2:17","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":3607,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3597,"src":"13495:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3609,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3588,"src":"13504:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13489:20:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13459:50:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13516:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13459:58:17","trueExpression":{"hexValue":"31","id":3612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13512:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3615,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13458:60:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13449:69:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3595,"id":3617,"nodeType":"Return","src":"13442:76:17"}]}]},"documentation":{"id":3586,"nodeType":"StructuredDocumentation","src":"13136:143:17","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3620,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"13293:5:17","nodeType":"FunctionDefinition","parameters":{"id":3592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3588,"mutability":"mutable","name":"value","nameLocation":"13307:5:17","nodeType":"VariableDeclaration","scope":3620,"src":"13299:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3587,"name":"uint256","nodeType":"ElementaryTypeName","src":"13299:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3591,"mutability":"mutable","name":"rounding","nameLocation":"13323:8:17","nodeType":"VariableDeclaration","scope":3620,"src":"13314:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"},"typeName":{"id":3590,"nodeType":"UserDefinedTypeName","pathNode":{"id":3589,"name":"Rounding","nameLocations":["13314:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":2722,"src":"13314:8:17"},"referencedDeclaration":2722,"src":"13314:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"13298:34:17"},"returnParameters":{"id":3595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3594,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3620,"src":"13356:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3593,"name":"uint256","nodeType":"ElementaryTypeName","src":"13356:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13355:9:17"},"scope":3765,"src":"13284:251:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3706,"nodeType":"Block","src":"13855:600:17","statements":[{"assignments":[3629],"declarations":[{"constant":false,"id":3629,"mutability":"mutable","name":"result","nameLocation":"13873:6:17","nodeType":"VariableDeclaration","scope":3706,"src":"13865:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3628,"name":"uint256","nodeType":"ElementaryTypeName","src":"13865:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3631,"initialValue":{"hexValue":"30","id":3630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13882:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13865:18:17"},{"id":3703,"nodeType":"UncheckedBlock","src":"13893:533:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"13921:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":3633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13930:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13921:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13936:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13921:16:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3646,"nodeType":"IfStatement","src":"13917:98:17","trueBody":{"id":3645,"nodeType":"Block","src":"13939:76:17","statements":[{"expression":{"id":3639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3637,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"13957:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":3638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13967:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"13957:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3640,"nodeType":"ExpressionStatement","src":"13957:13:17"},{"expression":{"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3641,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"13988:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":3642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13988:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3644,"nodeType":"ExpressionStatement","src":"13988:12:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3647,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"14032:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":3648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14041:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14032:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14046:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14032:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3661,"nodeType":"IfStatement","src":"14028:95:17","trueBody":{"id":3660,"nodeType":"Block","src":"14049:74:17","statements":[{"expression":{"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"14067:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":3653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14077:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"14067:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3655,"nodeType":"ExpressionStatement","src":"14067:12:17"},{"expression":{"id":3658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3656,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"14097:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":3657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14107:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14097:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3659,"nodeType":"ExpressionStatement","src":"14097:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3662,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"14140:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":3663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14149:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14140:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14154:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14140:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3676,"nodeType":"IfStatement","src":"14136:95:17","trueBody":{"id":3675,"nodeType":"Block","src":"14157:74:17","statements":[{"expression":{"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"14175:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":3668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14185:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14175:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3670,"nodeType":"ExpressionStatement","src":"14175:12:17"},{"expression":{"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3671,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"14205:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":3672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14215:1:17","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"14205:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3674,"nodeType":"ExpressionStatement","src":"14205:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"14248:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":3678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14257:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14248:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14262:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14248:15:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3691,"nodeType":"IfStatement","src":"14244:95:17","trueBody":{"id":3690,"nodeType":"Block","src":"14265:74:17","statements":[{"expression":{"id":3684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3682,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"14283:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":3683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14293:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14283:12:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3685,"nodeType":"ExpressionStatement","src":"14283:12:17"},{"expression":{"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3686,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"14313:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":3687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14323:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"14313:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3689,"nodeType":"ExpressionStatement","src":"14313:11:17"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3692,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"14356:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":3693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14365:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"14356:10:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14369:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14356:14:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3702,"nodeType":"IfStatement","src":"14352:64:17","trueBody":{"id":3701,"nodeType":"Block","src":"14372:44:17","statements":[{"expression":{"id":3699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3697,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"14390:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":3698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14400:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14390:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3700,"nodeType":"ExpressionStatement","src":"14390:11:17"}]}}]},{"expression":{"id":3704,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"14442:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3627,"id":3705,"nodeType":"Return","src":"14435:13:17"}]},"documentation":{"id":3621,"nodeType":"StructuredDocumentation","src":"13541:246:17","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."},"id":3707,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"13801:6:17","nodeType":"FunctionDefinition","parameters":{"id":3624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3623,"mutability":"mutable","name":"value","nameLocation":"13816:5:17","nodeType":"VariableDeclaration","scope":3707,"src":"13808:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3622,"name":"uint256","nodeType":"ElementaryTypeName","src":"13808:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13807:15:17"},"returnParameters":{"id":3627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3707,"src":"13846:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3625,"name":"uint256","nodeType":"ElementaryTypeName","src":"13846:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13845:9:17"},"scope":3765,"src":"13792:663:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3744,"nodeType":"Block","src":"14692:177:17","statements":[{"id":3743,"nodeType":"UncheckedBlock","src":"14702:161:17","statements":[{"assignments":[3719],"declarations":[{"constant":false,"id":3719,"mutability":"mutable","name":"result","nameLocation":"14734:6:17","nodeType":"VariableDeclaration","scope":3743,"src":"14726:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3718,"name":"uint256","nodeType":"ElementaryTypeName","src":"14726:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3723,"initialValue":{"arguments":[{"id":3721,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"14750:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3720,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[3707,3745],"referencedDeclaration":3707,"src":"14743:6:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14743:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14726:30:17"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3724,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"14777:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3726,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"14804:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}],"id":3725,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3764,"src":"14787:16:17","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$2722_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":3727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14787:26:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":3728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14817:1:17","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":3731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3729,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"14823:6:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":3730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14833:1:17","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"14823:11:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14822:13:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:18:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3734,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3710,"src":"14838:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14817:26:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14787:56:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":3738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14850:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":3739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14787:64:17","trueExpression":{"hexValue":"31","id":3737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14846:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3740,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14786:66:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14777:75:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3717,"id":3742,"nodeType":"Return","src":"14770:82:17"}]}]},"documentation":{"id":3708,"nodeType":"StructuredDocumentation","src":"14461:144:17","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":3745,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"14619:6:17","nodeType":"FunctionDefinition","parameters":{"id":3714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3710,"mutability":"mutable","name":"value","nameLocation":"14634:5:17","nodeType":"VariableDeclaration","scope":3745,"src":"14626:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3709,"name":"uint256","nodeType":"ElementaryTypeName","src":"14626:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3713,"mutability":"mutable","name":"rounding","nameLocation":"14650:8:17","nodeType":"VariableDeclaration","scope":3745,"src":"14641:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"},"typeName":{"id":3712,"nodeType":"UserDefinedTypeName","pathNode":{"id":3711,"name":"Rounding","nameLocations":["14641:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":2722,"src":"14641:8:17"},"referencedDeclaration":2722,"src":"14641:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"14625:34:17"},"returnParameters":{"id":3717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3745,"src":"14683:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3715,"name":"uint256","nodeType":"ElementaryTypeName","src":"14683:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14682:9:17"},"scope":3765,"src":"14610:259:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3763,"nodeType":"Block","src":"15067:48:17","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3756,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3749,"src":"15090:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}],"id":3755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15084:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3754,"name":"uint8","nodeType":"ElementaryTypeName","src":"15084:5:17","typeDescriptions":{}}},"id":3757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15084:15:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":3758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15102:1:17","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15084:19:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15107:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15084:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3753,"id":3762,"nodeType":"Return","src":"15077:31:17"}]},"documentation":{"id":3746,"nodeType":"StructuredDocumentation","src":"14875:113:17","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":3764,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"15002:16:17","nodeType":"FunctionDefinition","parameters":{"id":3750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3749,"mutability":"mutable","name":"rounding","nameLocation":"15028:8:17","nodeType":"VariableDeclaration","scope":3764,"src":"15019:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"},"typeName":{"id":3748,"nodeType":"UserDefinedTypeName","pathNode":{"id":3747,"name":"Rounding","nameLocations":["15019:8:17"],"nodeType":"IdentifierPath","referencedDeclaration":2722,"src":"15019:8:17"},"referencedDeclaration":2722,"src":"15019:8:17","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2722","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"15018:19:17"},"returnParameters":{"id":3753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3764,"src":"15061:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3751,"name":"bool","nodeType":"ElementaryTypeName","src":"15061:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15060:6:17"},"scope":3765,"src":"14993:122:17","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3766,"src":"203:14914:17","usedErrors":[2717],"usedEvents":[]}],"src":"103:15015:17"},"id":17},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SignedMath":[3870]},"id":3871,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3767,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:18"},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":3768,"nodeType":"StructuredDocumentation","src":"135:80:18","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":3870,"linearizedBaseContracts":[3870],"name":"SignedMath","nameLocation":"224:10:18","nodeType":"ContractDefinition","nodes":[{"body":{"id":3785,"nodeType":"Block","src":"376:37:18","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3778,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3771,"src":"393:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3779,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"397:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"393:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3782,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"405:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"393:13:18","trueExpression":{"id":3781,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3771,"src":"401:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3777,"id":3784,"nodeType":"Return","src":"386:20:18"}]},"documentation":{"id":3769,"nodeType":"StructuredDocumentation","src":"241:66:18","text":" @dev Returns the largest of two signed numbers."},"id":3786,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"321:3:18","nodeType":"FunctionDefinition","parameters":{"id":3774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3771,"mutability":"mutable","name":"a","nameLocation":"332:1:18","nodeType":"VariableDeclaration","scope":3786,"src":"325:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3770,"name":"int256","nodeType":"ElementaryTypeName","src":"325:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3773,"mutability":"mutable","name":"b","nameLocation":"342:1:18","nodeType":"VariableDeclaration","scope":3786,"src":"335:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3772,"name":"int256","nodeType":"ElementaryTypeName","src":"335:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"324:20:18"},"returnParameters":{"id":3777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3786,"src":"368:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3775,"name":"int256","nodeType":"ElementaryTypeName","src":"368:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"367:8:18"},"scope":3870,"src":"312:101:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3803,"nodeType":"Block","src":"555:37:18","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3796,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"572:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3797,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3791,"src":"576:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"572:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3800,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3791,"src":"584:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"572:13:18","trueExpression":{"id":3799,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"580:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3795,"id":3802,"nodeType":"Return","src":"565:20:18"}]},"documentation":{"id":3787,"nodeType":"StructuredDocumentation","src":"419:67:18","text":" @dev Returns the smallest of two signed numbers."},"id":3804,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"500:3:18","nodeType":"FunctionDefinition","parameters":{"id":3792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3789,"mutability":"mutable","name":"a","nameLocation":"511:1:18","nodeType":"VariableDeclaration","scope":3804,"src":"504:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3788,"name":"int256","nodeType":"ElementaryTypeName","src":"504:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3791,"mutability":"mutable","name":"b","nameLocation":"521:1:18","nodeType":"VariableDeclaration","scope":3804,"src":"514:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3790,"name":"int256","nodeType":"ElementaryTypeName","src":"514:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"503:20:18"},"returnParameters":{"id":3795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3804,"src":"547:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3793,"name":"int256","nodeType":"ElementaryTypeName","src":"547:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"546:8:18"},"scope":3870,"src":"491:101:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3847,"nodeType":"Block","src":"797:162:18","statements":[{"assignments":[3815],"declarations":[{"constant":false,"id":3815,"mutability":"mutable","name":"x","nameLocation":"866:1:18","nodeType":"VariableDeclaration","scope":3847,"src":"859:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3814,"name":"int256","nodeType":"ElementaryTypeName","src":"859:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":3828,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3816,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"871:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3817,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3809,"src":"875:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"871:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3819,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"870:7:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3820,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"882:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3821,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3809,"src":"886:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"882:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3823,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"881:7:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"892:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"881:12:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"880:14:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"870:24:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"859:35:18"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3829,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"911:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3834,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3815,"src":"931:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"923:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3832,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:18","typeDescriptions":{}}},"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":3836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"937:3:18","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"923:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"916:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":3830,"name":"int256","nodeType":"ElementaryTypeName","src":"916:6:18","typeDescriptions":{}}},"id":3838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3839,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"945:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3840,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3809,"src":"949:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"945:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3842,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"944:7:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"916:35:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":3844,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"915:37:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"911:41:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":3813,"id":3846,"nodeType":"Return","src":"904:48:18"}]},"documentation":{"id":3805,"nodeType":"StructuredDocumentation","src":"598:126:18","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":3848,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"738:7:18","nodeType":"FunctionDefinition","parameters":{"id":3810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3807,"mutability":"mutable","name":"a","nameLocation":"753:1:18","nodeType":"VariableDeclaration","scope":3848,"src":"746:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3806,"name":"int256","nodeType":"ElementaryTypeName","src":"746:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3809,"mutability":"mutable","name":"b","nameLocation":"763:1:18","nodeType":"VariableDeclaration","scope":3848,"src":"756:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3808,"name":"int256","nodeType":"ElementaryTypeName","src":"756:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"745:20:18"},"returnParameters":{"id":3813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3848,"src":"789:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3811,"name":"int256","nodeType":"ElementaryTypeName","src":"789:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"788:8:18"},"scope":3870,"src":"729:230:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3868,"nodeType":"Block","src":"1103:158:18","statements":[{"id":3867,"nodeType":"UncheckedBlock","src":"1113:142:18","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":3860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3858,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"1228:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":3859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1233:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1228:6:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1241:2:18","subExpression":{"id":3862,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"1242:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1228:15:18","trueExpression":{"id":3861,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"1237:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":3857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1220:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3856,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:18","typeDescriptions":{}}},"id":3865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3855,"id":3866,"nodeType":"Return","src":"1213:31:18"}]}]},"documentation":{"id":3849,"nodeType":"StructuredDocumentation","src":"965:78:18","text":" @dev Returns the absolute unsigned value of a signed value."},"id":3869,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1057:3:18","nodeType":"FunctionDefinition","parameters":{"id":3852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3851,"mutability":"mutable","name":"n","nameLocation":"1068:1:18","nodeType":"VariableDeclaration","scope":3869,"src":"1061:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3850,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1060:10:18"},"returnParameters":{"id":3855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3869,"src":"1094:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3853,"name":"uint256","nodeType":"ElementaryTypeName","src":"1094:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1093:9:18"},"scope":3870,"src":"1048:213:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3871,"src":"216:1047:18","usedErrors":[],"usedEvents":[]}],"src":"109:1155:18"},"id":18},"contracts/message/B2MessageBridge.sol":{"ast":{"absolutePath":"contracts/message/B2MessageBridge.sol","exportedSymbols":{"AccessControlUpgradeable":[362],"B2MessageBridge":[4228],"BusinessContract":[3891],"ContextUpgradeable":[844],"ECDSA":[2625],"EIP712Upgradeable":[1188],"ERC165Upgradeable":[1228],"ERC1967Utils":[1649],"IAccessControl":[1311],"IERC1822Proxiable":[1346],"IERC5267":[1336],"Initializable":[616],"MessageHashUtils":[2699],"UUPSUpgradeable":[798]},"id":4229,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3872,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:19"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":3873,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4229,"sourceUnit":617,"src":"58:75:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":3874,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4229,"sourceUnit":799,"src":"134:77:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","id":3875,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4229,"sourceUnit":363,"src":"212:81:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol","id":3876,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4229,"sourceUnit":1189,"src":"294:86:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","id":3877,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4229,"sourceUnit":2626,"src":"381:62:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"BusinessContract","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3891,"linearizedBaseContracts":[3891],"name":"BusinessContract","nameLocation":"456:16:19","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e09ee870","id":3890,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"488:4:19","nodeType":"FunctionDefinition","parameters":{"id":3886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3879,"mutability":"mutable","name":"from_chain_id","nameLocation":"501:13:19","nodeType":"VariableDeclaration","scope":3890,"src":"493:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3878,"name":"uint256","nodeType":"ElementaryTypeName","src":"493:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3881,"mutability":"mutable","name":"from_id","nameLocation":"524:7:19","nodeType":"VariableDeclaration","scope":3890,"src":"516:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3880,"name":"uint256","nodeType":"ElementaryTypeName","src":"516:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3883,"mutability":"mutable","name":"from_sender","nameLocation":"541:11:19","nodeType":"VariableDeclaration","scope":3890,"src":"533:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3882,"name":"address","nodeType":"ElementaryTypeName","src":"533:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3885,"mutability":"mutable","name":"data","nameLocation":"569:4:19","nodeType":"VariableDeclaration","scope":3890,"src":"554:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3884,"name":"bytes","nodeType":"ElementaryTypeName","src":"554:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"492:82:19"},"returnParameters":{"id":3889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3888,"mutability":"mutable","name":"success","nameLocation":"598:7:19","nodeType":"VariableDeclaration","scope":3890,"src":"593:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3887,"name":"bool","nodeType":"ElementaryTypeName","src":"593:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"592:14:19"},"scope":3891,"src":"479:128:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4229,"src":"446:163:19","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":3892,"name":"Initializable","nameLocations":["639:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"639:13:19"},"id":3893,"nodeType":"InheritanceSpecifier","src":"639:13:19"},{"baseName":{"id":3894,"name":"UUPSUpgradeable","nameLocations":["654:15:19"],"nodeType":"IdentifierPath","referencedDeclaration":798,"src":"654:15:19"},"id":3895,"nodeType":"InheritanceSpecifier","src":"654:15:19"},{"baseName":{"id":3896,"name":"EIP712Upgradeable","nameLocations":["671:17:19"],"nodeType":"IdentifierPath","referencedDeclaration":1188,"src":"671:17:19"},"id":3897,"nodeType":"InheritanceSpecifier","src":"671:17:19"},{"baseName":{"id":3898,"name":"AccessControlUpgradeable","nameLocations":["690:24:19"],"nodeType":"IdentifierPath","referencedDeclaration":362,"src":"690:24:19"},"id":3899,"nodeType":"InheritanceSpecifier","src":"690:24:19"}],"canonicalName":"B2MessageBridge","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":4228,"linearizedBaseContracts":[4228,362,1228,2711,1311,844,1188,1336,798,1346,616],"name":"B2MessageBridge","nameLocation":"620:15:19","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3902,"libraryName":{"id":3900,"name":"ECDSA","nameLocations":["728:5:19"],"nodeType":"IdentifierPath","referencedDeclaration":2625,"src":"728:5:19"},"nodeType":"UsingForDirective","src":"722:24:19","typeName":{"id":3901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"738:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":true,"functionSelector":"cc8f4261","id":3907,"mutability":"constant","name":"SEND_HASH_TYPE","nameLocation":"775:14:19","nodeType":"VariableDeclaration","scope":4228,"src":"751:173:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"751:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"53656e642875696e743235362066726f6d5f636861696e5f69642c75696e743235362066726f6d5f69642c616464726573732066726f6d5f73656e6465722c75696e7432353620746f5f636861696e5f69642c6164647265737320636f6e74726163745f616464726573732c6279746573206461746129","id":3905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"802:121:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_17a4f53d2ecdb8066d7886a0e506b8014ce17a9a263db690785538a077e52b09","typeString":"literal_string \"Send(uint256 from_chain_id,uint256 from_id,address from_sender,uint256 to_chain_id,address contract_address,bytes data)\""},"value":"Send(uint256 from_chain_id,uint256 from_id,address from_sender,uint256 to_chain_id,address contract_address,bytes data)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_17a4f53d2ecdb8066d7886a0e506b8014ce17a9a263db690785538a077e52b09","typeString":"literal_string \"Send(uint256 from_chain_id,uint256 from_id,address from_sender,uint256 to_chain_id,address contract_address,bytes data)\""}],"id":3904,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"792:9:19","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"792:132:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"functionSelector":"529d15cc","id":3909,"mutability":"mutable","name":"sequence","nameLocation":"945:8:19","nodeType":"VariableDeclaration","scope":4228,"src":"930:23:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3908,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"75b238fc","id":3914,"mutability":"constant","name":"ADMIN_ROLE","nameLocation":"983:10:19","nodeType":"VariableDeclaration","scope":4228,"src":"959:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"959:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"61646d696e5f726f6c65","id":3912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1006:12:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde","typeString":"literal_string \"admin_role\""},"value":"admin_role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde","typeString":"literal_string \"admin_role\""}],"id":3911,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"996:9:19","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"996:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"b908afa8","id":3919,"mutability":"constant","name":"UPGRADE_ROLE","nameLocation":"1049:12:19","nodeType":"VariableDeclaration","scope":4228,"src":"1025:64:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3915,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1025:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"757067726164655f726f6c65","id":3917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1074:14:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_cab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f9","typeString":"literal_string \"upgrade_role\""},"value":"upgrade_role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_cab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f9","typeString":"literal_string \"upgrade_role\""}],"id":3916,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1064:9:19","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1064:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"c49baebe","id":3924,"mutability":"constant","name":"VALIDATOR_ROLE","nameLocation":"1119:14:19","nodeType":"VariableDeclaration","scope":4228,"src":"1095:68:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3920,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1095:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"76616c696461746f725f726f6c65","id":3922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1146:16:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_5635ac0328a174458ffe72e6c6023489a57ff03280729989530f567288831c91","typeString":"literal_string \"validator_role\""},"value":"validator_role"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5635ac0328a174458ffe72e6c6023489a57ff03280729989530f567288831c91","typeString":"literal_string \"validator_role\""}],"id":3921,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1136:9:19","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1136:27:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"functionSelector":"a1aab33f","id":3926,"mutability":"mutable","name":"weight","nameLocation":"1184:6:19","nodeType":"VariableDeclaration","scope":4228,"src":"1169:21:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1169:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"body":{"id":3964,"nodeType":"Block","src":"1238:284:19","statements":[{"expression":{"arguments":[{"hexValue":"42324d657373616765427269646765","id":3932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1262:17:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_e79fa639e91ec8fa92b918fb7fa9ca2f622ce40f11208b8d47b8e07d3569e145","typeString":"literal_string \"B2MessageBridge\""},"value":"B2MessageBridge"},{"hexValue":"31","id":3933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1281:3:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e79fa639e91ec8fa92b918fb7fa9ca2f622ce40f11208b8d47b8e07d3569e145","typeString":"literal_string \"B2MessageBridge\""},{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""}],"id":3931,"name":"__EIP712_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"1248:13:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":3934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1248:37:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3935,"nodeType":"ExpressionStatement","src":"1248:37:19"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3936,"name":"__AccessControl_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63,"src":"1295:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1295:22:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3938,"nodeType":"ExpressionStatement","src":"1295:22:19"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3939,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"1327:22:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1327:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3941,"nodeType":"ExpressionStatement","src":"1327:24:19"},{"expression":{"arguments":[{"id":3943,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"1372:18:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3944,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1392:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1396:6:19","memberName":"sender","nodeType":"MemberAccess","src":"1392:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3942,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"1361:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":3946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1361:42:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3947,"nodeType":"ExpressionStatement","src":"1361:42:19"},{"expression":{"arguments":[{"id":3949,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"1424:10:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3950,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1436:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1440:6:19","memberName":"sender","nodeType":"MemberAccess","src":"1436:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3948,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"1413:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":3952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1413:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3953,"nodeType":"ExpressionStatement","src":"1413:34:19"},{"expression":{"arguments":[{"id":3955,"name":"UPGRADE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"1468:12:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3956,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1482:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1486:6:19","memberName":"sender","nodeType":"MemberAccess","src":"1482:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3954,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":315,"src":"1457:10:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":3958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1457:36:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3959,"nodeType":"ExpressionStatement","src":"1457:36:19"},{"expression":{"id":3962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3960,"name":"sequence","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"1503:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":3961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1514:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1503:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3963,"nodeType":"ExpressionStatement","src":"1503:12:19"}]},"functionSelector":"8129fc1c","id":3965,"implemented":true,"kind":"function","modifiers":[{"id":3929,"kind":"modifierInvocation","modifierName":{"id":3928,"name":"initializer","nameLocations":["1226:11:19"],"nodeType":"IdentifierPath","referencedDeclaration":470,"src":"1226:11:19"},"nodeType":"ModifierInvocation","src":"1226:11:19"}],"name":"initialize","nameLocation":"1206:10:19","nodeType":"FunctionDefinition","parameters":{"id":3927,"nodeType":"ParameterList","parameters":[],"src":"1216:2:19"},"returnParameters":{"id":3930,"nodeType":"ParameterList","parameters":[],"src":"1238:0:19"},"scope":4228,"src":"1197:325:19","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[752],"body":{"id":3974,"nodeType":"Block","src":"1651:8:19","statements":[]},"id":3975,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3970,"name":"UPGRADE_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3919,"src":"1616:12:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3971,"kind":"modifierInvocation","modifierName":{"id":3969,"name":"onlyRole","nameLocations":["1607:8:19"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"1607:8:19"},"nodeType":"ModifierInvocation","src":"1607:22:19"}],"name":"_authorizeUpgrade","nameLocation":"1537:17:19","nodeType":"FunctionDefinition","overrides":{"id":3972,"nodeType":"OverrideSpecifier","overrides":[],"src":"1638:8:19"},"parameters":{"id":3968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3967,"mutability":"mutable","name":"newImplementation","nameLocation":"1563:17:19","nodeType":"VariableDeclaration","scope":3975,"src":"1555:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3966,"name":"address","nodeType":"ElementaryTypeName","src":"1555:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1554:27:19"},"returnParameters":{"id":3973,"nodeType":"ParameterList","parameters":[],"src":"1651:0:19"},"scope":4228,"src":"1528:131:19","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3991,"nodeType":"Block","src":"1731:65:19","statements":[{"expression":{"id":3985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3983,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3926,"src":"1741:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3984,"name":"_weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3977,"src":"1750:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1741:16:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3986,"nodeType":"ExpressionStatement","src":"1741:16:19"},{"eventCall":{"arguments":[{"id":3988,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3926,"src":"1782:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3987,"name":"SetWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3996,"src":"1772:9:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":3989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1772:17:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3990,"nodeType":"EmitStatement","src":"1767:22:19"}]},"functionSelector":"fc1711f2","id":3992,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3980,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3914,"src":"1719:10:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3981,"kind":"modifierInvocation","modifierName":{"id":3979,"name":"onlyRole","nameLocations":["1710:8:19"],"nodeType":"IdentifierPath","referencedDeclaration":57,"src":"1710:8:19"},"nodeType":"ModifierInvocation","src":"1710:20:19"}],"name":"setWeight","nameLocation":"1674:9:19","nodeType":"FunctionDefinition","parameters":{"id":3978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3977,"mutability":"mutable","name":"_weight","nameLocation":"1692:7:19","nodeType":"VariableDeclaration","scope":3992,"src":"1684:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3976,"name":"uint256","nodeType":"ElementaryTypeName","src":"1684:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1683:17:19"},"returnParameters":{"id":3982,"nodeType":"ParameterList","parameters":[],"src":"1731:0:19"},"scope":4228,"src":"1665:131:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"1b29ec9f95417d697093ba2f17ce0861fb5bcbb7d5011cdde1020c9263ecc116","id":3996,"name":"SetWeight","nameLocation":"1808:9:19","nodeType":"EventDefinition","parameters":{"id":3995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3994,"indexed":false,"mutability":"mutable","name":"weight","nameLocation":"1826:6:19","nodeType":"VariableDeclaration","scope":3996,"src":"1818:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3993,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1817:16:19"},"src":"1802:32:19"},{"anonymous":false,"eventSelector":"5849ae3f4bc77f0ebd2d6db4ff282f91f2191d3df4493e63176c2ed22fb81852","id":4010,"name":"Send","nameLocation":"1845:4:19","nodeType":"EventDefinition","parameters":{"id":4009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3998,"indexed":false,"mutability":"mutable","name":"from_chain_id","nameLocation":"1858:13:19","nodeType":"VariableDeclaration","scope":4010,"src":"1850:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3997,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4000,"indexed":false,"mutability":"mutable","name":"from_id","nameLocation":"1881:7:19","nodeType":"VariableDeclaration","scope":4010,"src":"1873:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3999,"name":"uint256","nodeType":"ElementaryTypeName","src":"1873:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4002,"indexed":false,"mutability":"mutable","name":"from_sender","nameLocation":"1898:11:19","nodeType":"VariableDeclaration","scope":4010,"src":"1890:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4001,"name":"address","nodeType":"ElementaryTypeName","src":"1890:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4004,"indexed":false,"mutability":"mutable","name":"to_chain_id","nameLocation":"1919:11:19","nodeType":"VariableDeclaration","scope":4010,"src":"1911:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4003,"name":"uint256","nodeType":"ElementaryTypeName","src":"1911:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4006,"indexed":false,"mutability":"mutable","name":"contract_address","nameLocation":"1940:16:19","nodeType":"VariableDeclaration","scope":4010,"src":"1932:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4005,"name":"address","nodeType":"ElementaryTypeName","src":"1932:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4008,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"1964:4:19","nodeType":"VariableDeclaration","scope":4010,"src":"1958:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4007,"name":"bytes","nodeType":"ElementaryTypeName","src":"1958:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1849:120:19"},"src":"1839:131:19"},{"anonymous":false,"eventSelector":"599c34a8d0b3638870afcfe3d7d8125602721889a7535cda986ea656e63fc38c","id":4024,"name":"Call","nameLocation":"1981:4:19","nodeType":"EventDefinition","parameters":{"id":4023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4012,"indexed":false,"mutability":"mutable","name":"from_chain_id","nameLocation":"1994:13:19","nodeType":"VariableDeclaration","scope":4024,"src":"1986:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4011,"name":"uint256","nodeType":"ElementaryTypeName","src":"1986:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4014,"indexed":false,"mutability":"mutable","name":"from_id","nameLocation":"2017:7:19","nodeType":"VariableDeclaration","scope":4024,"src":"2009:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4013,"name":"uint256","nodeType":"ElementaryTypeName","src":"2009:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4016,"indexed":false,"mutability":"mutable","name":"from_sender","nameLocation":"2034:11:19","nodeType":"VariableDeclaration","scope":4024,"src":"2026:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4015,"name":"address","nodeType":"ElementaryTypeName","src":"2026:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4018,"indexed":false,"mutability":"mutable","name":"to_chain_id","nameLocation":"2055:11:19","nodeType":"VariableDeclaration","scope":4024,"src":"2047:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4017,"name":"uint256","nodeType":"ElementaryTypeName","src":"2047:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4020,"indexed":false,"mutability":"mutable","name":"contract_address","nameLocation":"2076:16:19","nodeType":"VariableDeclaration","scope":4024,"src":"2068:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4019,"name":"address","nodeType":"ElementaryTypeName","src":"2068:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4022,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"2100:4:19","nodeType":"VariableDeclaration","scope":4024,"src":"2094:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4021,"name":"bytes","nodeType":"ElementaryTypeName","src":"2094:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1985:120:19"},"src":"1975:131:19"},{"body":{"id":4123,"nodeType":"Block","src":"2272:688:19","statements":[{"assignments":[4041],"declarations":[{"constant":false,"id":4041,"mutability":"mutable","name":"weight_","nameLocation":"2290:7:19","nodeType":"VariableDeclaration","scope":4123,"src":"2282:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4040,"name":"uint256","nodeType":"ElementaryTypeName","src":"2282:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4043,"initialValue":{"hexValue":"30","id":4042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2300:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2282:19:19"},{"body":{"id":4079,"nodeType":"Block","src":"2358:214:19","statements":[{"assignments":[4056],"declarations":[{"constant":false,"id":4056,"mutability":"mutable","name":"success","nameLocation":"2376:7:19","nodeType":"VariableDeclaration","scope":4079,"src":"2371:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4055,"name":"bool","nodeType":"ElementaryTypeName","src":"2371:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4069,"initialValue":{"arguments":[{"id":4058,"name":"from_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4028,"src":"2393:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4059,"name":"from_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"2402:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4060,"name":"from_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"2417:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4061,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2430:5:19","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2436:7:19","memberName":"chainid","nodeType":"MemberAccess","src":"2430:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4063,"name":"contract_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4032,"src":"2445:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4064,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4034,"src":"2463:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"baseExpression":{"id":4065,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"2469:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":4067,"indexExpression":{"id":4066,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4045,"src":"2480:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2469:13:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":4057,"name":"verify","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"2386:6:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bool_$","typeString":"function (uint256,uint256,address,uint256,address,bytes calldata,bytes calldata) view returns (bool)"}},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2386:97:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"2371:112:19"},{"condition":{"id":4070,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4056,"src":"2500:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4078,"nodeType":"IfStatement","src":"2496:66:19","trueBody":{"id":4077,"nodeType":"Block","src":"2509:53:19","statements":[{"expression":{"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4071,"name":"weight_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"2527:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4072,"name":"weight_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"2537:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2547:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2537:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2527:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4076,"nodeType":"ExpressionStatement","src":"2527:21:19"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4048,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4045,"src":"2330:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4049,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"2334:10:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2345:6:19","memberName":"length","nodeType":"MemberAccess","src":"2334:17:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2330:21:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4080,"initializationExpression":{"assignments":[4045],"declarations":[{"constant":false,"id":4045,"mutability":"mutable","name":"i","nameLocation":"2323:1:19","nodeType":"VariableDeclaration","scope":4080,"src":"2315:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4044,"name":"uint256","nodeType":"ElementaryTypeName","src":"2315:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4047,"initialValue":{"hexValue":"30","id":4046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2327:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2315:13:19"},"loopExpression":{"expression":{"id":4053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2353:3:19","subExpression":{"id":4052,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4045,"src":"2353:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4054,"nodeType":"ExpressionStatement","src":"2353:3:19"},"nodeType":"ForStatement","src":"2311:261:19"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4082,"name":"weight_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"2589:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4083,"name":"weight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3926,"src":"2600:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2589:17:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"766572696679207369676e6174757265732077656967687420696e76616c6964","id":4085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2608:34:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_88ab1035d0caa060e7ed4577f80acf0519f87cbf4b2c2381493d28b46b3359cb","typeString":"literal_string \"verify signatures weight invalid\""},"value":"verify signatures weight invalid"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_88ab1035d0caa060e7ed4577f80acf0519f87cbf4b2c2381493d28b46b3359cb","typeString":"literal_string \"verify signatures weight invalid\""}],"id":4081,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2581:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2581:62:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4087,"nodeType":"ExpressionStatement","src":"2581:62:19"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4088,"name":"contract_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4032,"src":"2658:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"307830","id":4091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2686:3:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2678:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4089,"name":"address","nodeType":"ElementaryTypeName","src":"2678:7:19","typeDescriptions":{}}},"id":4092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2678:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2658:32:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4112,"nodeType":"IfStatement","src":"2654:205:19","trueBody":{"id":4111,"nodeType":"Block","src":"2692:167:19","statements":[{"assignments":[4095],"declarations":[{"constant":false,"id":4095,"mutability":"mutable","name":"success","nameLocation":"2711:7:19","nodeType":"VariableDeclaration","scope":4111,"src":"2706:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4094,"name":"bool","nodeType":"ElementaryTypeName","src":"2706:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4105,"initialValue":{"arguments":[{"id":4100,"name":"from_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"2761:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4101,"name":"from_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4028,"src":"2776:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4102,"name":"from_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"2785:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4103,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4034,"src":"2798:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":4097,"name":"contract_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4032,"src":"2738:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4096,"name":"BusinessContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3891,"src":"2721:16:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BusinessContract_$3891_$","typeString":"type(contract BusinessContract)"}},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:34:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BusinessContract_$3891","typeString":"contract BusinessContract"}},"id":4099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2756:4:19","memberName":"send","nodeType":"MemberAccess","referencedDeclaration":3890,"src":"2721:39:19","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (uint256,uint256,address,bytes memory) external returns (bool)"}},"id":4104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:82:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"2706:97:19"},{"expression":{"arguments":[{"id":4107,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4095,"src":"2825:7:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616c6c206661696c6564","id":4108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2834:13:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b","typeString":"literal_string \"Call failed\""},"value":"Call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b","typeString":"literal_string \"Call failed\""}],"id":4106,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2817:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2817:31:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4110,"nodeType":"ExpressionStatement","src":"2817:31:19"}]}},{"eventCall":{"arguments":[{"id":4114,"name":"from_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"2878:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4115,"name":"from_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4028,"src":"2893:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4116,"name":"from_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4030,"src":"2902:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":4117,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2915:5:19","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2921:7:19","memberName":"chainid","nodeType":"MemberAccess","src":"2915:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4119,"name":"contract_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4032,"src":"2930:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4120,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4034,"src":"2948:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":4113,"name":"Send","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"2873:4:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,address,uint256,address,bytes memory)"}},"id":4121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2873:80:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4122,"nodeType":"EmitStatement","src":"2868:85:19"}]},"functionSelector":"0d682acb","id":4124,"implemented":true,"kind":"function","modifiers":[],"name":"send","nameLocation":"2121:4:19","nodeType":"FunctionDefinition","parameters":{"id":4038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4026,"mutability":"mutable","name":"from_chain_id","nameLocation":"2134:13:19","nodeType":"VariableDeclaration","scope":4124,"src":"2126:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4025,"name":"uint256","nodeType":"ElementaryTypeName","src":"2126:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4028,"mutability":"mutable","name":"from_id","nameLocation":"2157:7:19","nodeType":"VariableDeclaration","scope":4124,"src":"2149:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4027,"name":"uint256","nodeType":"ElementaryTypeName","src":"2149:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4030,"mutability":"mutable","name":"from_sender","nameLocation":"2174:11:19","nodeType":"VariableDeclaration","scope":4124,"src":"2166:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4029,"name":"address","nodeType":"ElementaryTypeName","src":"2166:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4032,"mutability":"mutable","name":"contract_address","nameLocation":"2195:16:19","nodeType":"VariableDeclaration","scope":4124,"src":"2187:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4031,"name":"address","nodeType":"ElementaryTypeName","src":"2187:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4034,"mutability":"mutable","name":"data","nameLocation":"2228:4:19","nodeType":"VariableDeclaration","scope":4124,"src":"2213:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4033,"name":"bytes","nodeType":"ElementaryTypeName","src":"2213:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4037,"mutability":"mutable","name":"signatures","nameLocation":"2251:10:19","nodeType":"VariableDeclaration","scope":4124,"src":"2234:27:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":4035,"name":"bytes","nodeType":"ElementaryTypeName","src":"2234:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":4036,"nodeType":"ArrayTypeName","src":"2234:7:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"2125:137:19"},"returnParameters":{"id":4039,"nodeType":"ParameterList","parameters":[],"src":"2272:0:19"},"scope":4228,"src":"2112:848:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4154,"nodeType":"Block","src":"3075:158:19","statements":[{"expression":{"id":4139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4135,"name":"sequence","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"3085:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4136,"name":"sequence","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"3096:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3107:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3096:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3085:23:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4140,"nodeType":"ExpressionStatement","src":"3085:23:19"},{"eventCall":{"arguments":[{"expression":{"id":4142,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3128:5:19","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3134:7:19","memberName":"chainid","nodeType":"MemberAccess","src":"3128:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4144,"name":"sequence","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"3143:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4145,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3153:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3157:6:19","memberName":"sender","nodeType":"MemberAccess","src":"3153:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4147,"name":"to_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4126,"src":"3165:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4148,"name":"contract_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4128,"src":"3178:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4149,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4130,"src":"3196:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":4141,"name":"Call","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4024,"src":"3123:4:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,address,uint256,address,bytes memory)"}},"id":4150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3123:78:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4151,"nodeType":"EmitStatement","src":"3118:83:19"},{"expression":{"id":4152,"name":"sequence","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"3218:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4134,"id":4153,"nodeType":"Return","src":"3211:15:19"}]},"functionSelector":"6ba3300c","id":4155,"implemented":true,"kind":"function","modifiers":[],"name":"call","nameLocation":"2975:4:19","nodeType":"FunctionDefinition","parameters":{"id":4131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4126,"mutability":"mutable","name":"to_chain_id","nameLocation":"2988:11:19","nodeType":"VariableDeclaration","scope":4155,"src":"2980:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4125,"name":"uint256","nodeType":"ElementaryTypeName","src":"2980:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4128,"mutability":"mutable","name":"contract_address","nameLocation":"3009:16:19","nodeType":"VariableDeclaration","scope":4155,"src":"3001:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4127,"name":"address","nodeType":"ElementaryTypeName","src":"3001:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4130,"mutability":"mutable","name":"data","nameLocation":"3042:4:19","nodeType":"VariableDeclaration","scope":4155,"src":"3027:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4129,"name":"bytes","nodeType":"ElementaryTypeName","src":"3027:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2979:68:19"},"returnParameters":{"id":4134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4155,"src":"3066:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4132,"name":"uint256","nodeType":"ElementaryTypeName","src":"3066:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3065:9:19"},"scope":4228,"src":"2966:267:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4193,"nodeType":"Block","src":"3438:185:19","statements":[{"assignments":[4175],"declarations":[{"constant":false,"id":4175,"mutability":"mutable","name":"digest","nameLocation":"3457:6:19","nodeType":"VariableDeclaration","scope":4193,"src":"3449:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3449:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4184,"initialValue":{"arguments":[{"id":4177,"name":"from_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"3476:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4178,"name":"from_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4159,"src":"3491:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4179,"name":"from_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4161,"src":"3500:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4180,"name":"to_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4163,"src":"3513:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4181,"name":"contract_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"3526:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4182,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4167,"src":"3544:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":4176,"name":"SendHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4227,"src":"3467:8:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,address,uint256,address,bytes calldata) view returns (bytes32)"}},"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3467:82:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3449:100:19"},{"expression":{"arguments":[{"id":4186,"name":"VALIDATOR_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3924,"src":"3574:14:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":4189,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4169,"src":"3605:9:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":4187,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"3590:6:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3597:7:19","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":2381,"src":"3590:14:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":4190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3590:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4185,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":116,"src":"3566:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3566:50:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4173,"id":4192,"nodeType":"Return","src":"3559:57:19"}]},"functionSelector":"bc5c11aa","id":4194,"implemented":true,"kind":"function","modifiers":[],"name":"verify","nameLocation":"3248:6:19","nodeType":"FunctionDefinition","parameters":{"id":4170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4157,"mutability":"mutable","name":"from_chain_id","nameLocation":"3263:13:19","nodeType":"VariableDeclaration","scope":4194,"src":"3255:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4156,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4159,"mutability":"mutable","name":"from_id","nameLocation":"3286:7:19","nodeType":"VariableDeclaration","scope":4194,"src":"3278:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4158,"name":"uint256","nodeType":"ElementaryTypeName","src":"3278:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4161,"mutability":"mutable","name":"from_sender","nameLocation":"3303:11:19","nodeType":"VariableDeclaration","scope":4194,"src":"3295:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4160,"name":"address","nodeType":"ElementaryTypeName","src":"3295:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4163,"mutability":"mutable","name":"to_chain_id","nameLocation":"3324:11:19","nodeType":"VariableDeclaration","scope":4194,"src":"3316:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4162,"name":"uint256","nodeType":"ElementaryTypeName","src":"3316:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4165,"mutability":"mutable","name":"contract_address","nameLocation":"3345:16:19","nodeType":"VariableDeclaration","scope":4194,"src":"3337:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4164,"name":"address","nodeType":"ElementaryTypeName","src":"3337:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4167,"mutability":"mutable","name":"data","nameLocation":"3378:4:19","nodeType":"VariableDeclaration","scope":4194,"src":"3363:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4166,"name":"bytes","nodeType":"ElementaryTypeName","src":"3363:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4169,"mutability":"mutable","name":"signature","nameLocation":"3399:9:19","nodeType":"VariableDeclaration","scope":4194,"src":"3384:24:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4168,"name":"bytes","nodeType":"ElementaryTypeName","src":"3384:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3254:155:19"},"returnParameters":{"id":4173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4194,"src":"3432:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4171,"name":"bool","nodeType":"ElementaryTypeName","src":"3432:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3431:6:19"},"scope":4228,"src":"3239:384:19","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4226,"nodeType":"Block","src":"3806:152:19","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":4215,"name":"SEND_HASH_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"3861:14:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4216,"name":"from_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"3876:13:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4217,"name":"from_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4198,"src":"3891:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4218,"name":"from_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"3900:11:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4219,"name":"to_chain_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"3913:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4220,"name":"contract_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"3926:16:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4221,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4206,"src":"3944:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":4213,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3850:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3854:6:19","memberName":"encode","nodeType":"MemberAccess","src":"3850:10:19","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3850:99:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4212,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3840:9:19","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3840:110:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4211,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"3823:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3823:128:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4210,"id":4225,"nodeType":"Return","src":"3816:135:19"}]},"functionSelector":"04760f2e","id":4227,"implemented":true,"kind":"function","modifiers":[],"name":"SendHash","nameLocation":"3638:8:19","nodeType":"FunctionDefinition","parameters":{"id":4207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4196,"mutability":"mutable","name":"from_chain_id","nameLocation":"3655:13:19","nodeType":"VariableDeclaration","scope":4227,"src":"3647:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4195,"name":"uint256","nodeType":"ElementaryTypeName","src":"3647:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4198,"mutability":"mutable","name":"from_id","nameLocation":"3678:7:19","nodeType":"VariableDeclaration","scope":4227,"src":"3670:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4197,"name":"uint256","nodeType":"ElementaryTypeName","src":"3670:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4200,"mutability":"mutable","name":"from_sender","nameLocation":"3695:11:19","nodeType":"VariableDeclaration","scope":4227,"src":"3687:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4199,"name":"address","nodeType":"ElementaryTypeName","src":"3687:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4202,"mutability":"mutable","name":"to_chain_id","nameLocation":"3716:11:19","nodeType":"VariableDeclaration","scope":4227,"src":"3708:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4201,"name":"uint256","nodeType":"ElementaryTypeName","src":"3708:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4204,"mutability":"mutable","name":"contract_address","nameLocation":"3737:16:19","nodeType":"VariableDeclaration","scope":4227,"src":"3729:24:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4203,"name":"address","nodeType":"ElementaryTypeName","src":"3729:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4206,"mutability":"mutable","name":"data","nameLocation":"3770:4:19","nodeType":"VariableDeclaration","scope":4227,"src":"3755:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4205,"name":"bytes","nodeType":"ElementaryTypeName","src":"3755:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3646:129:19"},"returnParameters":{"id":4210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4227,"src":"3797:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3797:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3796:9:19"},"scope":4228,"src":"3629:329:19","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":4229,"src":"611:3350:19","usedErrors":[379,382,643,648,1238,1241,1381,1394,1672,1675,2288,2293,2298],"usedEvents":[387,1250,1259,1268,1316,1360,3996,4010,4024]}],"src":"32:3929:19"},"id":19}},"contracts":{"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"AccessControlUpgradeable":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"UUPSUpgradeable":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","proxiableUUID()":"52d1902d","upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ContextUpgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"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.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol":{"EIP712Upgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to produce the hash of their typed data using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":\"EIP712Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x85462422a22578744581e012e9aa0a391958cb360288b0b63f29bf0431d70327\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bc529e2b9b28da5d26da451058250d85afcaa3c5083ee273ac68fa6bf956b78\",\"dweb:/ipfs/Qmd3Aq59ztmoVmHigsaR4YjkXWKERVpjfQ4a2PHk7Ke6Rx\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"abi":[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"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); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/IERC5267.sol":{"IERC5267":{"abi":[{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":\"IERC5267\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"IERC1822Proxiable":{"abi":[{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"proxiableUUID()":"52d1902d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ERC1967Utils":{"abi":[{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"beacon","type":"address"}],"name":"ERC1967InvalidBeacon","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fb3f28c1d9a5e0b4976c1f7c4a4ce18ce467171e5a5966bcc771239da9fa58864736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xB3F28C1D9A5E0B4976C1F7C4A4CE18CE467171E5A5966BCC771239DA9FA58864 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"449:6273:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;449:6273:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fb3f28c1d9a5e0b4976c1f7c4a4ce18ce467171e5a5966bcc771239da9fa58864736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xB3F28C1D9A5E0B4976C1F7C4A4CE18CE467171E5A5966BCC771239DA9FA58864 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"449:6273:9:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"This abstract contract provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"IBeacon":{"abi":[{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"implementation()":"5c60da1b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2116c26642d99b6660542ad25041b3381980959e7b44f2e036b7fe738bc77ee64736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 GT PUSH13 0x26642D99B6660542AD25041B33 DUP2 SWAP9 MULMOD MSIZE 0xE7 0xB4 0x4F 0x2E SUB PUSH12 0x7FE738BC77EE64736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"195:6066:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:6066:11;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b2116c26642d99b6660542ad25041b3381980959e7b44f2e036b7fe738bc77ee64736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 GT PUSH13 0x26642D99B6660542AD25041B33 DUP2 SWAP9 MULMOD MSIZE 0xE7 0xB4 0x4F 0x2E SUB PUSH12 0x7FE738BC77EE64736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"195:6066:11:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059fa9fe938fefef1bd0eb076859bb74dbab034420677a2ae82078da6df2e86f464736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE STATICCALL SWAP16 0xE9 CODESIZE INVALID INVALID CALL 0xBD 0xE 0xB0 PUSH23 0x859BB74DBAB034420677A2AE82078DA6DF2E86F464736F PUSH13 0x63430008140033000000000000 ","sourceMap":"1245:2685:12:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1245:2685:12;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059fa9fe938fefef1bd0eb076859bb74dbab034420677a2ae82078da6df2e86f464736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE STATICCALL SWAP16 0xE9 CODESIZE INVALID INVALID CALL 0xBD 0xE 0xB0 PUSH23 0x859BB74DBAB034420677A2AE82078DA6DF2E86F464736F PUSH13 0x63430008140033000000000000 ","sourceMap":"1245:2685:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC1967 implementation slot: ```solidity contract ERC1967 { bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d70f15be75af79ae10cdfad86ba6045493973d2d6779ed4d31615b58387c022164736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 0xF ISZERO 0xBE PUSH22 0xAF79AE10CDFAD86BA6045493973D2D6779ED4D31615B PC CODESIZE PUSH29 0x22164736F6C6343000814003300000000000000000000000000000000 ","sourceMap":"251:2847:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:2847:13;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d70f15be75af79ae10cdfad86ba6045493973d2d6779ed4d31615b58387c022164736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 0xF ISZERO 0xBE PUSH22 0xAF79AE10CDFAD86BA6045493973D2D6779ED4D31615B PC CODESIZE PUSH29 0x22164736F6C6343000814003300000000000000000000000000000000 ","sourceMap":"251:2847:13:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ECDSA":{"abi":[{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201b16271420b970ada55d7a644f7be65b48e3af35562fa8dfaffeb7e1eee0ddb364736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL AND 0x27 EQ KECCAK256 0xB9 PUSH17 0xADA55D7A644F7BE65B48E3AF35562FA8DF 0xAF INVALID 0xB7 0xE1 0xEE 0xE0 0xDD 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"344:7386:14:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;344:7386:14;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201b16271420b970ada55d7a644f7be65b48e3af35562fa8dfaffeb7e1eee0ddb364736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL AND 0x27 EQ KECCAK256 0xB9 PUSH17 0xADA55D7A644F7BE65B48E3AF35562FA8DF 0xAF INVALID 0xB7 0xE1 0xEE 0xE0 0xDD 0xB3 PUSH5 0x736F6C6343 STOP ADDMOD EQ STOP CALLER ","sourceMap":"344:7386:14:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"MessageHashUtils":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e646b204a217f98e3ebddc7a4376e69f44216c583dc162ce889d8c14c2a6913664736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 CHAINID 0xB2 DIV LOG2 OR 0xF9 DUP15 RETURNDATACOPY 0xBD 0xDC PUSH27 0x4376E69F44216C583DC162CE889D8C14C2A6913664736F6C634300 ADDMOD EQ STOP CALLER ","sourceMap":"521:3235:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;521:3235:15;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e646b204a217f98e3ebddc7a4376e69f44216c583dc162ce889d8c14c2a6913664736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 CHAINID 0xB2 DIV LOG2 OR 0xF9 DUP15 RETURNDATACOPY 0xBD 0xDC PUSH27 0x4376E69F44216C583DC162CE889D8C14C2A6913664736F6C634300 ADDMOD EQ STOP CALLER ","sourceMap":"521:3235:15:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing. The library provides methods for generating a hash of a message that conforms to the https://eips.ethereum.org/EIPS/eip-191[EIP 191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712] specifications.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":\"MessageHashUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[{"inputs":[],"name":"MathOverflowedMulDiv","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b68383f9d48a41264ff8ca2c2eb9bf77a9f2883294fa8b82c7719b48d40b0f864736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH9 0x383F9D48A41264FF8C LOG2 0xC2 0xEB SWAP12 0xF7 PUSH27 0x9F2883294FA8B82C7719B48D40B0F864736F6C6343000814003300 ","sourceMap":"203:14914:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;203:14914:17;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b68383f9d48a41264ff8ca2c2eb9bf77a9f2883294fa8b82c7719b48d40b0f864736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPDEST PUSH9 0x383F9D48A41264FF8C LOG2 0xC2 0xEB SWAP12 0xF7 PUSH27 0x9F2883294FA8B82C7719B48D40B0F864736F6C6343000814003300 ","sourceMap":"203:14914:17:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c07cb824bf56ed2e2e56bc80d8c7ae11334f1229542a9fb2b54655d41fd07ac64736f6c63430008140033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 SMOD 0xCB DUP3 0x4B CREATE2 PUSH15 0xD2E2E56BC80D8C7AE11334F1229542 0xA9 0xFB 0x2B SLOAD PUSH6 0x5D41FD07AC64 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"216:1047:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;216:1047:18;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209c07cb824bf56ed2e2e56bc80d8c7ae11334f1229542a9fb2b54655d41fd07ac64736f6c63430008140033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP13 SMOD 0xCB DUP3 0x4B CREATE2 PUSH15 0xD2E2E56BC80D8C7AE11334F1229542 0xA9 0xFB 0x2B SLOAD PUSH6 0x5D41FD07AC64 PUSH20 0x6F6C634300081400330000000000000000000000 ","sourceMap":"216:1047:18:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"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\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/message/B2MessageBridge.sol":{"B2MessageBridge":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"from_id","type":"uint256"},{"indexed":false,"internalType":"address","name":"from_sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"to_chain_id","type":"uint256"},{"indexed":false,"internalType":"address","name":"contract_address","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Call","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"from_id","type":"uint256"},{"indexed":false,"internalType":"address","name":"from_sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"to_chain_id","type":"uint256"},{"indexed":false,"internalType":"address","name":"contract_address","type":"address"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Send","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"SetWeight","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SEND_HASH_TYPE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"internalType":"uint256","name":"from_id","type":"uint256"},{"internalType":"address","name":"from_sender","type":"address"},{"internalType":"uint256","name":"to_chain_id","type":"uint256"},{"internalType":"address","name":"contract_address","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"SendHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VALIDATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"to_chain_id","type":"uint256"},{"internalType":"address","name":"contract_address","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"call","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"internalType":"uint256","name":"from_id","type":"uint256"},{"internalType":"address","name":"from_sender","type":"address"},{"internalType":"address","name":"contract_address","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sequence","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_weight","type":"uint256"}],"name":"setWeight","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":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"internalType":"uint256","name":"from_id","type":"uint256"},{"internalType":"address","name":"from_sender","type":"address"},{"internalType":"uint256","name":"to_chain_id","type":"uint256"},{"internalType":"address","name":"contract_address","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5060805161230061003e60003960008181610f9f01528181610fc8015261116a01526123006000f3fe6080604052600436106101805760003560e01c80638129fc1c116100d6578063b908afa81161007f578063cc8f426111610059578063cc8f4261146104d6578063d547741f1461050a578063fc1711f21461052a57600080fd5b8063b908afa81461044e578063bc5c11aa14610482578063c49baebe146104a257600080fd5b8063a1aab33f116100b0578063a1aab33f146103cd578063a217fddf146103e3578063ad3cb1cc146103f857600080fd5b80638129fc1c1461032b57806384b0196e1461034057806391d148541461036857600080fd5b806336568abe1161013857806352d1902d1161011257806352d1902d146102c25780636ba3300c146102d757806375b238fc146102f757600080fd5b806336568abe146102795780634f1ef28614610299578063529d15cc146102ac57600080fd5b80630d682acb116101695780630d682acb146101e8578063248a9ca31461020a5780632f2ff15d1461025957600080fd5b806301ffc9a71461018557806304760f2e146101ba575b600080fd5b34801561019157600080fd5b506101a56101a0366004611a3b565b61054a565b60405190151581526020015b60405180910390f35b3480156101c657600080fd5b506101da6101d5366004611ae2565b6105e3565b6040519081526020016101b1565b3480156101f457600080fd5b50610208610203366004611b64565b61064e565b005b34801561021657600080fd5b506101da610225366004611c38565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b34801561026557600080fd5b50610208610274366004611c51565b61084c565b34801561028557600080fd5b50610208610294366004611c51565b610896565b6102086102a7366004611c93565b6108e7565b3480156102b857600080fd5b506101da60005481565b3480156102ce57600080fd5b506101da610906565b3480156102e357600080fd5b506101da6102f2366004611d55565b610935565b34801561030357600080fd5b506101da7f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde81565b34801561033757600080fd5b50610208610998565b34801561034c57600080fd5b50610355610bb5565b6040516101b19796959493929190611dff565b34801561037457600080fd5b506101a5610383366004611c51565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103d957600080fd5b506101da60015481565b3480156103ef57600080fd5b506101da600081565b34801561040457600080fd5b506104416040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101b19190611eb1565b34801561045a57600080fd5b506101da7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f981565b34801561048e57600080fd5b506101a561049d366004611ec4565b610c97565b3480156104ae57600080fd5b506101da7f5635ac0328a174458ffe72e6c6023489a57ff03280729989530f567288831c9181565b3480156104e257600080fd5b506101da7f17a4f53d2ecdb8066d7886a0e506b8014ce17a9a263db690785538a077e52b0981565b34801561051657600080fd5b50610208610525366004611c51565b610d20565b34801561053657600080fd5b50610208610545366004611c38565b610d64565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806105dd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006106427f17a4f53d2ecdb8066d7886a0e506b8014ce17a9a263db690785538a077e52b0989898989898989604051602001610627989796959493929190611f9d565b60405160208183030381529060405280519060200120610dca565b98975050505050505050565b6000805b828110156106b357600061068a8a8c8b468c8c8c8c8c8b81811061067857610678611ff0565b905060200281019061049d9190612006565b905080156106a05761069d836001612063565b92505b50806106ab81612076565b915050610652565b5060015481101561070b5760405162461bcd60e51b815260206004820181905260248201527f766572696679207369676e6174757265732077656967687420696e76616c696460448201526064015b60405180910390fd5b6001600160a01b038616156107fe576040517fe09ee8700000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063e09ee8709061076a908d908d908d908c908c9060040161208f565b6020604051808303816000875af1158015610789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ad91906120c9565b9050806107fc5760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610702565b505b7f5849ae3f4bc77f0ebd2d6db4ff282f91f2191d3df4493e63176c2ed22fb81852898989468a8a8a60405161083997969594939291906120eb565b60405180910390a1505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461088681610e12565b6108908383610e1f565b50505050565b6001600160a01b03811633146108d8576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108e28282610eee565b505050565b6108ef610f94565b6108f88261104d565b6109028282611077565b5050565b600061091061115f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60008054610944906001612063565b60008190556040517f599c34a8d0b3638870afcfe3d7d8125602721889a7535cda986ea656e63fc38c916109849146919033908a908a908a908a906120eb565b60405180910390a150600054949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e35750825b905060008267ffffffffffffffff166001148015610a005750303b155b905081158015610a0e575080155b15610a45576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a7957845468ff00000000000000001916680100000000000000001785555b610aed6040518060400160405280600f81526020017f42324d65737361676542726964676500000000000000000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506111a8565b610af56111ba565b610afd6111ba565b610b08600033610e1f565b50610b337f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde33610e1f565b50610b5e7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f933610e1f565b50600080558315610bae57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008054909150158015610bf457506001810154155b610c405760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610702565b610c486111c2565b610c50611297565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b600080610ca98b8b8b8b8b8b8b6105e3565b9050610d117f5635ac0328a174458ffe72e6c6023489a57ff03280729989530f567288831c9161038386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087939250506112e89050565b9b9a5050505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d5a81610e12565b6108908383610eee565b7f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde610d8e81610e12565b60018290556040518281527f1b29ec9f95417d697093ba2f17ce0861fb5bcbb7d5011cdde1020c9263ecc1169060200160405180910390a15050565b60006105dd610dd7611312565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b610e1c8133611321565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16610ee4576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610e9a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506105dd565b60009150506105dd565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615610ee4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506105dd565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061102d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110217f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561104b5760405163703e46dd60e11b815260040160405180910390fd5b565b7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f961090281610e12565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156110d1575060408051601f3d908101601f191682019092526110ce91810190612137565b60015b6110f957604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610702565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611155576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610702565b6108e283836113ae565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461104b5760405163703e46dd60e11b815260040160405180910390fd5b6111b0611404565b610902828261146b565b61104b611404565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1009161121390612150565b80601f016020809104026020016040519081016040528092919081815260200182805461123f90612150565b801561128c5780601f106112615761010080835404028352916020019161128c565b820191906000526020600020905b81548152906001019060200180831161126f57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1009161121390612150565b6000806000806112f886866114de565b925092509250611308828261152b565b5090949350505050565b600061131c61162f565b905090565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610902576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610702565b6113b7826116a3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156113fc576108e28282611732565b6109026117a8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661104b576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611473611404565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026114bf84826121d8565b50600381016114ce83826121d8565b5060008082556001909101555050565b600080600083516041036115185760208401516040850151606086015160001a61150a888285856117e0565b955095509550505050611524565b50508151600091506002905b9250925092565b600082600381111561153f5761153f612298565b03611548575050565b600182600381111561155c5761155c612298565b03611593576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156115a7576115a7612298565b036115e1576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610702565b60038260038111156115f5576115f5612298565b03610902576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610702565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61165a6118af565b61166261192b565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b806001600160a01b03163b6000036116d957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610702565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161174f91906122ae565b600060405180830381855af49150503d806000811461178a576040519150601f19603f3d011682016040523d82523d6000602084013e61178f565b606091505b509150915061179f858383611981565b95945050505050565b341561104b576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561181b57506000915060039050826118a5565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561186f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661189b575060009250600191508290506118a5565b9250600091508190505b9450945094915050565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100816118db6111c2565b8051909150156118f357805160209091012092915050565b81548015611902579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10081611957611297565b80519091501561196f57805160209091012092915050565b60018201548015611902579392505050565b60608261199657611991826119f9565b6119f2565b81511580156119ad57506001600160a01b0384163b155b156119ef576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610702565b50805b9392505050565b805115611a095780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611a4d57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119f257600080fd5b80356001600160a01b0381168114611a9457600080fd5b919050565b60008083601f840112611aab57600080fd5b50813567ffffffffffffffff811115611ac357600080fd5b602083019150836020828501011115611adb57600080fd5b9250929050565b600080600080600080600060c0888a031215611afd57600080fd5b8735965060208801359550611b1460408901611a7d565b945060608801359350611b2960808901611a7d565b925060a088013567ffffffffffffffff811115611b4557600080fd5b611b518a828b01611a99565b989b979a50959850939692959293505050565b60008060008060008060008060c0898b031215611b8057600080fd5b8835975060208901359650611b9760408a01611a7d565b9550611ba560608a01611a7d565b9450608089013567ffffffffffffffff80821115611bc257600080fd5b611bce8c838d01611a99565b909650945060a08b0135915080821115611be757600080fd5b818b0191508b601f830112611bfb57600080fd5b813581811115611c0a57600080fd5b8c60208260051b8501011115611c1f57600080fd5b6020830194508093505050509295985092959890939650565b600060208284031215611c4a57600080fd5b5035919050565b60008060408385031215611c6457600080fd5b82359150611c7460208401611a7d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611ca657600080fd5b611caf83611a7d565b9150602083013567ffffffffffffffff80821115611ccc57600080fd5b818501915085601f830112611ce057600080fd5b813581811115611cf257611cf2611c7d565b604051601f8201601f19908116603f01168101908382118183101715611d1a57611d1a611c7d565b81604052828152886020848701011115611d3357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060608587031215611d6b57600080fd5b84359350611d7b60208601611a7d565b9250604085013567ffffffffffffffff811115611d9757600080fd5b611da387828801611a99565b95989497509550505050565b60005b83811015611dca578181015183820152602001611db2565b50506000910152565b60008151808452611deb816020860160208601611daf565b601f01601f19169290920160200192915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152611e3b60e084018a611dd3565b8381036040850152611e4d818a611dd3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015611e9f57835183529284019291840191600101611e83565b50909c9b505050505050505050505050565b6020815260006119f26020830184611dd3565b600080600080600080600080600060e08a8c031215611ee257600080fd5b8935985060208a01359750611ef960408b01611a7d565b965060608a01359550611f0e60808b01611a7d565b945060a08a013567ffffffffffffffff80821115611f2b57600080fd5b611f378d838e01611a99565b909650945060c08c0135915080821115611f5057600080fd5b50611f5d8c828d01611a99565b915080935050809150509295985092959850929598565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b88815287602082015286604082015260006001600160a01b03808816606084015286608084015280861660a08401525060e060c0830152611fe260e083018486611f74565b9a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261201d57600080fd5b83018035915067ffffffffffffffff82111561203857600080fd5b602001915036819003821315611adb57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105dd576105dd61204d565b6000600182016120885761208861204d565b5060010190565b8581528460208201526001600160a01b03841660408201526080606082015260006120be608083018486611f74565b979650505050505050565b6000602082840312156120db57600080fd5b815180151581146119f257600080fd5b87815286602082015260006001600160a01b03808816604084015286606084015280861660808401525060c060a083015261212a60c083018486611f74565b9998505050505050505050565b60006020828403121561214957600080fd5b5051919050565b600181811c9082168061216457607f821691505b60208210810361218457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156108e257600081815260208120601f850160051c810160208610156121b15750805b601f850160051c820191505b818110156121d0578281556001016121bd565b505050505050565b815167ffffffffffffffff8111156121f2576121f2611c7d565b612206816122008454612150565b8461218a565b602080601f83116001811461223b57600084156122235750858301515b600019600386901b1c1916600185901b1785556121d0565b600085815260208120601f198616915b8281101561226a5788860151825594840194600190910190840161224b565b50858210156122885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b600082516122c0818460208701611daf565b919091019291505056fea264697066735822122044aa55334082267f97d7f7928dd15ba98b2f1001512de00b94b1bc93cb86ab6564736f6c63430008140033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x2300 PUSH2 0x3E PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0xF9F ADD MSTORE DUP2 DUP2 PUSH2 0xFC8 ADD MSTORE PUSH2 0x116A ADD MSTORE PUSH2 0x2300 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x180 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8129FC1C GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xB908AFA8 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xCC8F4261 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCC8F4261 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0xFC1711F2 EQ PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB908AFA8 EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0xBC5C11AA EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0xC49BAEBE EQ PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA1AAB33F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xA1AAB33F EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x52D1902D GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x6BA3300C EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x529D15CC EQ PUSH2 0x2AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD682ACB GT PUSH2 0x169 JUMPI DUP1 PUSH4 0xD682ACB EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x4760F2E EQ PUSH2 0x1BA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x1D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AE2 JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B64 JUMP JUMPDEST PUSH2 0x64E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x225 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C38 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C51 JUMP JUMPDEST PUSH2 0x84C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x294 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C51 JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C93 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x906 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x935 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x998 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x355 PUSH2 0xBB5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DFF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x383 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C51 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x441 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x1EB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x49D CALLDATASIZE PUSH1 0x4 PUSH2 0x1EC4 JUMP JUMPDEST PUSH2 0xC97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH32 0x5635AC0328A174458FFE72E6C6023489A57FF03280729989530F567288831C91 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH32 0x17A4F53D2ECDB8066D7886A0E506B8014CE17A9A263DB690785538A077E52B09 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x525 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C51 JUMP JUMPDEST PUSH2 0xD20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x545 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C38 JUMP JUMPDEST PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x5DD JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x642 PUSH32 0x17A4F53D2ECDB8066D7886A0E506B8014CE17A9A263DB690785538A077E52B09 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x627 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xDCA JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 PUSH2 0x68A DUP11 DUP13 DUP12 CHAINID DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP2 DUP2 LT PUSH2 0x678 JUMPI PUSH2 0x678 PUSH2 0x1FF0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x49D SWAP2 SWAP1 PUSH2 0x2006 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x6A0 JUMPI PUSH2 0x69D DUP4 PUSH1 0x1 PUSH2 0x2063 JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP1 PUSH2 0x6AB DUP2 PUSH2 0x2076 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x652 JUMP JUMPDEST POP PUSH1 0x1 SLOAD DUP2 LT ISZERO PUSH2 0x70B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x766572696679207369676E6174757265732077656967687420696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO PUSH2 0x7FE JUMPI PUSH1 0x40 MLOAD PUSH32 0xE09EE87000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xE09EE870 SWAP1 PUSH2 0x76A SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x208F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x789 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7AD SWAP2 SWAP1 PUSH2 0x20C9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x7FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616C6C206661696C6564000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x702 JUMP JUMPDEST POP JUMPDEST PUSH32 0x5849AE3F4BC77F0EBD2D6DB4FF282F91F2191D3DF4493E63176C2ED22FB81852 DUP10 DUP10 DUP10 CHAINID DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x839 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x886 DUP2 PUSH2 0xE12 JUMP JUMPDEST PUSH2 0x890 DUP4 DUP4 PUSH2 0xE1F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x8D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8E2 DUP3 DUP3 PUSH2 0xEEE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8EF PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x8F8 DUP3 PUSH2 0x104D JUMP JUMPDEST PUSH2 0x902 DUP3 DUP3 PUSH2 0x1077 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x910 PUSH2 0x115F JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x944 SWAP1 PUSH1 0x1 PUSH2 0x2063 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x599C34A8D0B3638870AFCFE3D7D8125602721889A7535CDA986EA656E63FC38C SWAP2 PUSH2 0x984 SWAP2 CHAINID SWAP2 SWAP1 CALLER SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x0 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x9E3 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xA00 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xA0E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xA45 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xA79 JUMPI DUP5 SLOAD PUSH9 0xFF0000000000000000 NOT AND PUSH9 0x10000000000000000 OR DUP6 SSTORE JUMPDEST PUSH2 0xAED PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x42324D6573736167654272696467650000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x11A8 JUMP JUMPDEST PUSH2 0xAF5 PUSH2 0x11BA JUMP JUMPDEST PUSH2 0xAFD PUSH2 0x11BA JUMP JUMPDEST PUSH2 0xB08 PUSH1 0x0 CALLER PUSH2 0xE1F JUMP JUMPDEST POP PUSH2 0xB33 PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE CALLER PUSH2 0xE1F JUMP JUMPDEST POP PUSH2 0xB5E PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 CALLER PUSH2 0xE1F JUMP JUMPDEST POP PUSH1 0x0 DUP1 SSTORE DUP4 ISZERO PUSH2 0xBAE JUMPI DUP5 SLOAD PUSH9 0xFF0000000000000000 NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 DUP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 DUP1 SLOAD SWAP1 SWAP2 POP ISZERO DUP1 ISZERO PUSH2 0xBF4 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0xC40 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4549503731323A20556E696E697469616C697A65640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x702 JUMP JUMPDEST PUSH2 0xC48 PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0xC50 PUSH2 0x1297 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 SWAP13 SWAP4 SWAP12 POP SWAP2 SWAP10 POP CHAINID SWAP9 POP ADDRESS SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCA9 DUP12 DUP12 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x5E3 JUMP JUMPDEST SWAP1 POP PUSH2 0xD11 PUSH32 0x5635AC0328A174458FFE72E6C6023489A57FF03280729989530F567288831C91 PUSH2 0x383 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP8 SWAP4 SWAP3 POP POP PUSH2 0x12E8 SWAP1 POP JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD5A DUP2 PUSH2 0xE12 JUMP JUMPDEST PUSH2 0x890 DUP4 DUP4 PUSH2 0xEEE JUMP JUMPDEST PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE PUSH2 0xD8E DUP2 PUSH2 0xE12 JUMP JUMPDEST PUSH1 0x1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0x1B29EC9F95417D697093BA2F17CE0861FB5BCBB7D5011CDDE1020C9263ECC116 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD PUSH2 0xDD7 PUSH2 0x1312 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xE1C DUP2 CALLER PUSH2 0x1321 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEE4 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xE9A CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x5DD JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x5DD JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xEE4 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x5DD JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x102D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1021 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 PUSH2 0x902 DUP2 PUSH2 0xE12 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x10D1 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x10CE SWAP2 DUP2 ADD SWAP1 PUSH2 0x2137 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x10F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x1155 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH2 0x8E2 DUP4 DUP4 PUSH2 0x13AE JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11B0 PUSH2 0x1404 JUMP JUMPDEST PUSH2 0x902 DUP3 DUP3 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x104B PUSH2 0x1404 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 SWAP2 PUSH2 0x1213 SWAP1 PUSH2 0x2150 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x123F SWAP1 PUSH2 0x2150 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x128C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1261 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x128C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x126F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 SWAP2 PUSH2 0x1213 SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x12F8 DUP7 DUP7 PUSH2 0x14DE JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1308 DUP3 DUP3 PUSH2 0x152B JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x131C PUSH2 0x162F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x902 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x702 JUMP JUMPDEST PUSH2 0x13B7 DUP3 PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x13FC JUMPI PUSH2 0x8E2 DUP3 DUP3 PUSH2 0x1732 JUMP JUMPDEST PUSH2 0x902 PUSH2 0x17A8 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1473 PUSH2 0x1404 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 PUSH2 0x14BF DUP5 DUP3 PUSH2 0x21D8 JUMP JUMPDEST POP PUSH1 0x3 DUP2 ADD PUSH2 0x14CE DUP4 DUP3 PUSH2 0x21D8 JUMP JUMPDEST POP PUSH1 0x0 DUP1 DUP3 SSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x1518 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x150A DUP9 DUP3 DUP6 DUP6 PUSH2 0x17E0 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x1524 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x153F JUMPI PUSH2 0x153F PUSH2 0x2298 JUMP JUMPDEST SUB PUSH2 0x1548 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x155C JUMPI PUSH2 0x155C PUSH2 0x2298 JUMP JUMPDEST SUB PUSH2 0x1593 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15A7 JUMPI PUSH2 0x15A7 PUSH2 0x2298 JUMP JUMPDEST SUB PUSH2 0x15E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15F5 JUMPI PUSH2 0x15F5 PUSH2 0x2298 JUMP JUMPDEST SUB PUSH2 0x902 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH2 0x165A PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x1662 PUSH2 0x192B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x16D9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x174F SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x178A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x178F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x179F DUP6 DUP4 DUP4 PUSH2 0x1981 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x181B JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x18A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x186F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x189B JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x18A5 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 DUP2 PUSH2 0x18DB PUSH2 0x11C2 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x18F3 JUMPI DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD DUP1 ISZERO PUSH2 0x1902 JUMPI SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 DUP2 PUSH2 0x1957 PUSH2 0x1297 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x196F JUMPI DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD DUP1 ISZERO PUSH2 0x1902 JUMPI SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1996 JUMPI PUSH2 0x1991 DUP3 PUSH2 0x19F9 JUMP JUMPDEST PUSH2 0x19F2 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x19AD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x19EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1A09 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x19F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1AAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1ADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x1AFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH2 0x1B14 PUSH1 0x40 DUP10 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1B29 PUSH1 0x80 DUP10 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B51 DUP11 DUP3 DUP12 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1B80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH2 0x1B97 PUSH1 0x40 DUP11 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP6 POP PUSH2 0x1BA5 PUSH1 0x60 DUP11 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1BC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BCE DUP13 DUP4 DUP14 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0xA0 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1BE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1BFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1C0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x1C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x1C74 PUSH1 0x20 DUP5 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CAF DUP4 PUSH2 0x1A7D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1CE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1CF2 JUMPI PUSH2 0x1CF2 PUSH2 0x1C7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1D1A JUMPI PUSH2 0x1D1A PUSH2 0x1C7D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1D33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0x1D7B PUSH1 0x20 DUP7 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1D97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DA3 DUP8 DUP3 DUP9 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DB2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1DEB DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1DAF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP9 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 DUP2 DUP5 ADD MSTORE PUSH2 0x1E3B PUSH1 0xE0 DUP5 ADD DUP11 PUSH2 0x1DD3 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x1E4D DUP2 DUP11 PUSH2 0x1DD3 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD DUP8 SWAP1 MSTORE DUP5 DUP2 SUB PUSH1 0xC0 DUP7 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE DUP4 DUP8 ADD SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E9F JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1E83 JUMP JUMPDEST POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x19F2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1DD3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x1EE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 CALLDATALOAD SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH2 0x1EF9 PUSH1 0x40 DUP12 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP6 POP PUSH2 0x1F0E PUSH1 0x80 DUP12 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1F2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F37 DUP14 DUP4 DUP15 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0xC0 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1F50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F5D DUP13 DUP3 DUP14 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP2 POP DUP1 SWAP4 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST DUP9 DUP2 MSTORE DUP8 PUSH1 0x20 DUP3 ADD MSTORE DUP7 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x60 DUP5 ADD MSTORE DUP7 PUSH1 0x80 DUP5 ADD MSTORE DUP1 DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE POP PUSH1 0xE0 PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x1FE2 PUSH1 0xE0 DUP4 ADD DUP5 DUP7 PUSH2 0x1F74 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x201D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2038 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1ADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x5DD JUMPI PUSH2 0x5DD PUSH2 0x204D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x2088 JUMPI PUSH2 0x2088 PUSH2 0x204D JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP6 DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x20BE PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1F74 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE DUP7 PUSH1 0x60 DUP5 ADD MSTORE DUP1 DUP7 AND PUSH1 0x80 DUP5 ADD MSTORE POP PUSH1 0xC0 PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x212A PUSH1 0xC0 DUP4 ADD DUP5 DUP7 PUSH2 0x1F74 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2164 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2184 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x21B1 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21D0 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x21BD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x21F2 JUMPI PUSH2 0x21F2 PUSH2 0x1C7D JUMP JUMPDEST PUSH2 0x2206 DUP2 PUSH2 0x2200 DUP5 SLOAD PUSH2 0x2150 JUMP JUMPDEST DUP5 PUSH2 0x218A JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x223B JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x2223 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x21D0 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x226A JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x224B JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x2288 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x22C0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1DAF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO 0xAA SSTORE CALLER BLOCKHASH DUP3 0x26 PUSH32 0x97D7F7928DD15BA98B2F1001512DE00B94B1BC93CB86AB6564736F6C63430008 EQ STOP CALLER ","sourceMap":"611:3350:19:-:0;;;1171:4:2;1128:48;;611:3350:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ADMIN_ROLE_3914":{"entryPoint":null,"id":3914,"parameterSlots":0,"returnSlots":0},"@DEFAULT_ADMIN_ROLE_28":{"entryPoint":null,"id":28,"parameterSlots":0,"returnSlots":0},"@SEND_HASH_TYPE_3907":{"entryPoint":null,"id":3907,"parameterSlots":0,"returnSlots":0},"@SendHash_4227":{"entryPoint":1507,"id":4227,"parameterSlots":7,"returnSlots":1},"@UPGRADE_INTERFACE_VERSION_640":{"entryPoint":null,"id":640,"parameterSlots":0,"returnSlots":0},"@UPGRADE_ROLE_3919":{"entryPoint":null,"id":3919,"parameterSlots":0,"returnSlots":0},"@VALIDATOR_ROLE_3924":{"entryPoint":null,"id":3924,"parameterSlots":0,"returnSlots":0},"@_EIP712NameHash_1135":{"entryPoint":6319,"id":1135,"parameterSlots":0,"returnSlots":1},"@_EIP712Name_1067":{"entryPoint":4546,"id":1067,"parameterSlots":0,"returnSlots":1},"@_EIP712VersionHash_1187":{"entryPoint":6443,"id":1187,"parameterSlots":0,"returnSlots":1},"@_EIP712Version_1083":{"entryPoint":4759,"id":1083,"parameterSlots":0,"returnSlots":1},"@__AccessControl_init_63":{"entryPoint":4538,"id":63,"parameterSlots":0,"returnSlots":0},"@__EIP712_init_901":{"entryPoint":4520,"id":901,"parameterSlots":2,"returnSlots":0},"@__EIP712_init_unchained_941":{"entryPoint":5227,"id":941,"parameterSlots":2,"returnSlots":0},"@__UUPSUpgradeable_init_670":{"entryPoint":null,"id":670,"parameterSlots":0,"returnSlots":0},"@_authorizeUpgrade_3975":{"entryPoint":4173,"id":3975,"parameterSlots":1,"returnSlots":0},"@_buildDomainSeparator_974":{"entryPoint":5679,"id":974,"parameterSlots":0,"returnSlots":1},"@_checkInitializing_538":{"entryPoint":5124,"id":538,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_1648":{"entryPoint":6056,"id":1648,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_746":{"entryPoint":4447,"id":746,"parameterSlots":0,"returnSlots":0},"@_checkProxy_730":{"entryPoint":3988,"id":730,"parameterSlots":0,"returnSlots":0},"@_checkRole_129":{"entryPoint":3602,"id":129,"parameterSlots":1,"returnSlots":0},"@_checkRole_150":{"entryPoint":4897,"id":150,"parameterSlots":2,"returnSlots":0},"@_domainSeparatorV4_951":{"entryPoint":4882,"id":951,"parameterSlots":0,"returnSlots":1},"@_getAccessControlStorage_46":{"entryPoint":null,"id":46,"parameterSlots":0,"returnSlots":1},"@_getEIP712Storage_885":{"entryPoint":null,"id":885,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_615":{"entryPoint":null,"id":615,"parameterSlots":0,"returnSlots":1},"@_grantRole_315":{"entryPoint":3615,"id":315,"parameterSlots":2,"returnSlots":1},"@_hashTypedDataV4_990":{"entryPoint":3530,"id":990,"parameterSlots":1,"returnSlots":1},"@_isInitializing_606":{"entryPoint":null,"id":606,"parameterSlots":0,"returnSlots":1},"@_msgSender_826":{"entryPoint":null,"id":826,"parameterSlots":0,"returnSlots":1},"@_revert_1911":{"entryPoint":6649,"id":1911,"parameterSlots":1,"returnSlots":0},"@_revokeRole_361":{"entryPoint":3822,"id":361,"parameterSlots":2,"returnSlots":1},"@_setImplementation_1434":{"entryPoint":5795,"id":1434,"parameterSlots":1,"returnSlots":0},"@_throwError_2624":{"entryPoint":5419,"id":2624,"parameterSlots":2,"returnSlots":0},"@_upgradeToAndCallUUPS_797":{"entryPoint":4215,"id":797,"parameterSlots":2,"returnSlots":0},"@call_4155":{"entryPoint":2357,"id":4155,"parameterSlots":4,"returnSlots":1},"@eip712Domain_1051":{"entryPoint":2997,"id":1051,"parameterSlots":0,"returnSlots":7},"@functionDelegateCall_1831":{"entryPoint":5938,"id":1831,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1944":{"entryPoint":null,"id":1944,"parameterSlots":1,"returnSlots":1},"@getImplementation_1407":{"entryPoint":null,"id":1407,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_171":{"entryPoint":null,"id":171,"parameterSlots":1,"returnSlots":1},"@grantRole_190":{"entryPoint":2124,"id":190,"parameterSlots":2,"returnSlots":0},"@hasRole_116":{"entryPoint":null,"id":116,"parameterSlots":2,"returnSlots":1},"@initialize_3965":{"entryPoint":2456,"id":3965,"parameterSlots":0,"returnSlots":0},"@proxiableUUID_688":{"entryPoint":2310,"id":688,"parameterSlots":0,"returnSlots":1},"@recover_2381":{"entryPoint":4840,"id":2381,"parameterSlots":2,"returnSlots":1},"@renounceRole_232":{"entryPoint":2198,"id":232,"parameterSlots":2,"returnSlots":0},"@revokeRole_209":{"entryPoint":3360,"id":209,"parameterSlots":2,"returnSlots":0},"@send_4124":{"entryPoint":1614,"id":4124,"parameterSlots":8,"returnSlots":0},"@sequence_3909":{"entryPoint":null,"id":3909,"parameterSlots":0,"returnSlots":0},"@setWeight_3992":{"entryPoint":3428,"id":3992,"parameterSlots":1,"returnSlots":0},"@supportsInterface_1227":{"entryPoint":null,"id":1227,"parameterSlots":1,"returnSlots":1},"@supportsInterface_91":{"entryPoint":1354,"id":91,"parameterSlots":1,"returnSlots":1},"@toTypedDataHash_2698":{"entryPoint":null,"id":2698,"parameterSlots":2,"returnSlots":1},"@tryRecover_2351":{"entryPoint":5342,"id":2351,"parameterSlots":2,"returnSlots":3},"@tryRecover_2539":{"entryPoint":6112,"id":2539,"parameterSlots":4,"returnSlots":3},"@upgradeToAndCall_1468":{"entryPoint":5038,"id":1468,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_708":{"entryPoint":2279,"id":708,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1871":{"entryPoint":6529,"id":1871,"parameterSlots":3,"returnSlots":1},"@verify_4194":{"entryPoint":3223,"id":4194,"parameterSlots":9,"returnSlots":1},"@weight_3926":{"entryPoint":null,"id":3926,"parameterSlots":0,"returnSlots":0},"abi_decode_address":{"entryPoint":6781,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":6809,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":7315,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":8393,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":7224,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":8503,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":7249,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":6715,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_addresst_bytes_calldata_ptr":{"entryPoint":7509,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint256t_uint256t_addresst_addresst_bytes_calldata_ptrt_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":7012,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_addresst_bytes_calldata_ptr":{"entryPoint":6882,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":7876,"id":null,"parameterSlots":2,"returnSlots":9},"abi_encode_bytes_calldata":{"entryPoint":8052,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_string":{"entryPoint":7635,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":8878,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":7679,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_calldata_ptr__to_t_bytes32_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8093,"id":null,"parameterSlots":9,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7857,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_88ab1035d0caa060e7ed4577f80acf0519f87cbf4b2c2381493d28b46b3359cb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8335,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8427,"id":null,"parameterSlots":8,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":8198,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":8291,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":8586,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":8664,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":7599,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":8528,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":8310,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":8269,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":8856,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":8176,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":7293,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:18699:20","statements":[{"nodeType":"YulBlock","src":"6:3:20","statements":[]},{"body":{"nodeType":"YulBlock","src":"83:263:20","statements":[{"body":{"nodeType":"YulBlock","src":"129:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"138:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"141:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"131:6:20"},"nodeType":"YulFunctionCall","src":"131:12:20"},"nodeType":"YulExpressionStatement","src":"131:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"104:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"113:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"100:3:20"},"nodeType":"YulFunctionCall","src":"100:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"125:2:20","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"96:3:20"},"nodeType":"YulFunctionCall","src":"96:32:20"},"nodeType":"YulIf","src":"93:52:20"},{"nodeType":"YulVariableDeclaration","src":"154:36:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"180:9:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"167:12:20"},"nodeType":"YulFunctionCall","src":"167:23:20"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"158:5:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"300:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"309:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"312:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"302:6:20"},"nodeType":"YulFunctionCall","src":"302:12:20"},"nodeType":"YulExpressionStatement","src":"302:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"212:5:20"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:20"},{"kind":"number","nodeType":"YulLiteral","src":"230:66:20","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"219:3:20"},"nodeType":"YulFunctionCall","src":"219:78:20"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"209:2:20"},"nodeType":"YulFunctionCall","src":"209:89:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"202:6:20"},"nodeType":"YulFunctionCall","src":"202:97:20"},"nodeType":"YulIf","src":"199:117:20"},{"nodeType":"YulAssignment","src":"325:15:20","value":{"name":"value","nodeType":"YulIdentifier","src":"335:5:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"325:6:20"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"49:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"60:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"72:6:20","type":""}],"src":"14:332:20"},{"body":{"nodeType":"YulBlock","src":"446:92:20","statements":[{"nodeType":"YulAssignment","src":"456:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:20"},"nodeType":"YulFunctionCall","src":"464:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"456:4:20"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"498:9:20"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"523:6:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"516:6:20"},"nodeType":"YulFunctionCall","src":"516:14:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"509:6:20"},"nodeType":"YulFunctionCall","src":"509:22:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"491:6:20"},"nodeType":"YulFunctionCall","src":"491:41:20"},"nodeType":"YulExpressionStatement","src":"491:41:20"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"415:9:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"426:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"437:4:20","type":""}],"src":"351:187:20"},{"body":{"nodeType":"YulBlock","src":"592:147:20","statements":[{"nodeType":"YulAssignment","src":"602:29:20","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"624:6:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"611:12:20"},"nodeType":"YulFunctionCall","src":"611:20:20"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"602:5:20"}]},{"body":{"nodeType":"YulBlock","src":"717:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"726:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"729:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"719:6:20"},"nodeType":"YulFunctionCall","src":"719:12:20"},"nodeType":"YulExpressionStatement","src":"719:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"653:5:20"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"664:5:20"},{"kind":"number","nodeType":"YulLiteral","src":"671:42:20","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"660:3:20"},"nodeType":"YulFunctionCall","src":"660:54:20"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"650:2:20"},"nodeType":"YulFunctionCall","src":"650:65:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"643:6:20"},"nodeType":"YulFunctionCall","src":"643:73:20"},"nodeType":"YulIf","src":"640:93:20"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"571:6:20","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"582:5:20","type":""}],"src":"543:196:20"},{"body":{"nodeType":"YulBlock","src":"816:275:20","statements":[{"body":{"nodeType":"YulBlock","src":"865:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"874:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"877:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"867:6:20"},"nodeType":"YulFunctionCall","src":"867:12:20"},"nodeType":"YulExpressionStatement","src":"867:12:20"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"844:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"852:4:20","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"840:3:20"},"nodeType":"YulFunctionCall","src":"840:17:20"},{"name":"end","nodeType":"YulIdentifier","src":"859:3:20"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:20"},"nodeType":"YulFunctionCall","src":"836:27:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"829:6:20"},"nodeType":"YulFunctionCall","src":"829:35:20"},"nodeType":"YulIf","src":"826:55:20"},{"nodeType":"YulAssignment","src":"890:30:20","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"913:6:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"900:12:20"},"nodeType":"YulFunctionCall","src":"900:20:20"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"890:6:20"}]},{"body":{"nodeType":"YulBlock","src":"963:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"972:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"975:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"965:6:20"},"nodeType":"YulFunctionCall","src":"965:12:20"},"nodeType":"YulExpressionStatement","src":"965:12:20"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"935:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"943:18:20","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"932:2:20"},"nodeType":"YulFunctionCall","src":"932:30:20"},"nodeType":"YulIf","src":"929:50:20"},{"nodeType":"YulAssignment","src":"988:29:20","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1004:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"1012:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1000:3:20"},"nodeType":"YulFunctionCall","src":"1000:17:20"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"988:8:20"}]},{"body":{"nodeType":"YulBlock","src":"1069:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1078:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1081:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1071:6:20"},"nodeType":"YulFunctionCall","src":"1071:12:20"},"nodeType":"YulExpressionStatement","src":"1071:12:20"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1040:6:20"},{"name":"length","nodeType":"YulIdentifier","src":"1048:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:20"},"nodeType":"YulFunctionCall","src":"1036:19:20"},{"kind":"number","nodeType":"YulLiteral","src":"1057:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1032:3:20"},"nodeType":"YulFunctionCall","src":"1032:30:20"},{"name":"end","nodeType":"YulIdentifier","src":"1064:3:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1029:2:20"},"nodeType":"YulFunctionCall","src":"1029:39:20"},"nodeType":"YulIf","src":"1026:59:20"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"779:6:20","type":""},{"name":"end","nodeType":"YulTypedName","src":"787:3:20","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"795:8:20","type":""},{"name":"length","nodeType":"YulTypedName","src":"805:6:20","type":""}],"src":"744:347:20"},{"body":{"nodeType":"YulBlock","src":"1270:590:20","statements":[{"body":{"nodeType":"YulBlock","src":"1317:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1326:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1329:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1319:6:20"},"nodeType":"YulFunctionCall","src":"1319:12:20"},"nodeType":"YulExpressionStatement","src":"1319:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1291:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"1300:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1287:3:20"},"nodeType":"YulFunctionCall","src":"1287:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"1312:3:20","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1283:3:20"},"nodeType":"YulFunctionCall","src":"1283:33:20"},"nodeType":"YulIf","src":"1280:53:20"},{"nodeType":"YulAssignment","src":"1342:33:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1365:9:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1352:12:20"},"nodeType":"YulFunctionCall","src":"1352:23:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1342:6:20"}]},{"nodeType":"YulAssignment","src":"1384:42:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1411:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"1422:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1407:3:20"},"nodeType":"YulFunctionCall","src":"1407:18:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1394:12:20"},"nodeType":"YulFunctionCall","src":"1394:32:20"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1384:6:20"}]},{"nodeType":"YulAssignment","src":"1435:48:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1468:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"1479:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1464:3:20"},"nodeType":"YulFunctionCall","src":"1464:18:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1445:18:20"},"nodeType":"YulFunctionCall","src":"1445:38:20"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1435:6:20"}]},{"nodeType":"YulAssignment","src":"1492:42:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1519:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"1530:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1515:3:20"},"nodeType":"YulFunctionCall","src":"1515:18:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1502:12:20"},"nodeType":"YulFunctionCall","src":"1502:32:20"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1492:6:20"}]},{"nodeType":"YulAssignment","src":"1543:49:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1576:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"1587:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1572:3:20"},"nodeType":"YulFunctionCall","src":"1572:19:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1553:18:20"},"nodeType":"YulFunctionCall","src":"1553:39:20"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1543:6:20"}]},{"nodeType":"YulVariableDeclaration","src":"1601:47:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1632:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"1643:3:20","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1628:3:20"},"nodeType":"YulFunctionCall","src":"1628:19:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1615:12:20"},"nodeType":"YulFunctionCall","src":"1615:33:20"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1605:6:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"1691:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1700:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1703:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1693:6:20"},"nodeType":"YulFunctionCall","src":"1693:12:20"},"nodeType":"YulExpressionStatement","src":"1693:12:20"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1663:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"1671:18:20","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1660:2:20"},"nodeType":"YulFunctionCall","src":"1660:30:20"},"nodeType":"YulIf","src":"1657:50:20"},{"nodeType":"YulVariableDeclaration","src":"1716:84:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1772:9:20"},{"name":"offset","nodeType":"YulIdentifier","src":"1783:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1768:3:20"},"nodeType":"YulFunctionCall","src":"1768:22:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1792:7:20"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1742:25:20"},"nodeType":"YulFunctionCall","src":"1742:58:20"},"variables":[{"name":"value5_1","nodeType":"YulTypedName","src":"1720:8:20","type":""},{"name":"value6_1","nodeType":"YulTypedName","src":"1730:8:20","type":""}]},{"nodeType":"YulAssignment","src":"1809:18:20","value":{"name":"value5_1","nodeType":"YulIdentifier","src":"1819:8:20"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"1809:6:20"}]},{"nodeType":"YulAssignment","src":"1836:18:20","value":{"name":"value6_1","nodeType":"YulIdentifier","src":"1846:8:20"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"1836:6:20"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_addresst_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1188:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1199:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1211:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1219:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1227:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1235:6:20","type":""},{"name":"value4","nodeType":"YulTypedName","src":"1243:6:20","type":""},{"name":"value5","nodeType":"YulTypedName","src":"1251:6:20","type":""},{"name":"value6","nodeType":"YulTypedName","src":"1259:6:20","type":""}],"src":"1096:764:20"},{"body":{"nodeType":"YulBlock","src":"1966:76:20","statements":[{"nodeType":"YulAssignment","src":"1976:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1988:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"1999:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1984:3:20"},"nodeType":"YulFunctionCall","src":"1984:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1976:4:20"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2018:9:20"},{"name":"value0","nodeType":"YulIdentifier","src":"2029:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2011:6:20"},"nodeType":"YulFunctionCall","src":"2011:25:20"},"nodeType":"YulExpressionStatement","src":"2011:25:20"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1935:9:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1946:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1957:4:20","type":""}],"src":"1865:177:20"},{"body":{"nodeType":"YulBlock","src":"2267:980:20","statements":[{"body":{"nodeType":"YulBlock","src":"2314:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2323:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2326:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2316:6:20"},"nodeType":"YulFunctionCall","src":"2316:12:20"},"nodeType":"YulExpressionStatement","src":"2316:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2288:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"2297:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2284:3:20"},"nodeType":"YulFunctionCall","src":"2284:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"2309:3:20","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2280:3:20"},"nodeType":"YulFunctionCall","src":"2280:33:20"},"nodeType":"YulIf","src":"2277:53:20"},{"nodeType":"YulAssignment","src":"2339:33:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2362:9:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2349:12:20"},"nodeType":"YulFunctionCall","src":"2349:23:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2339:6:20"}]},{"nodeType":"YulAssignment","src":"2381:42:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2408:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"2419:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2404:3:20"},"nodeType":"YulFunctionCall","src":"2404:18:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2391:12:20"},"nodeType":"YulFunctionCall","src":"2391:32:20"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2381:6:20"}]},{"nodeType":"YulAssignment","src":"2432:48:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2465:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"2476:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2461:3:20"},"nodeType":"YulFunctionCall","src":"2461:18:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2442:18:20"},"nodeType":"YulFunctionCall","src":"2442:38:20"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2432:6:20"}]},{"nodeType":"YulAssignment","src":"2489:48:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2522:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"2533:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2518:3:20"},"nodeType":"YulFunctionCall","src":"2518:18:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2499:18:20"},"nodeType":"YulFunctionCall","src":"2499:38:20"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2489:6:20"}]},{"nodeType":"YulVariableDeclaration","src":"2546:47:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2577:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"2588:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2573:3:20"},"nodeType":"YulFunctionCall","src":"2573:19:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2560:12:20"},"nodeType":"YulFunctionCall","src":"2560:33:20"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2550:6:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2602:28:20","value":{"kind":"number","nodeType":"YulLiteral","src":"2612:18:20","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2606:2:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"2657:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2666:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2669:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2659:6:20"},"nodeType":"YulFunctionCall","src":"2659:12:20"},"nodeType":"YulExpressionStatement","src":"2659:12:20"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2645:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"2653:2:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2642:2:20"},"nodeType":"YulFunctionCall","src":"2642:14:20"},"nodeType":"YulIf","src":"2639:34:20"},{"nodeType":"YulVariableDeclaration","src":"2682:84:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2738:9:20"},{"name":"offset","nodeType":"YulIdentifier","src":"2749:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2734:3:20"},"nodeType":"YulFunctionCall","src":"2734:22:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2758:7:20"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"2708:25:20"},"nodeType":"YulFunctionCall","src":"2708:58:20"},"variables":[{"name":"value4_1","nodeType":"YulTypedName","src":"2686:8:20","type":""},{"name":"value5_1","nodeType":"YulTypedName","src":"2696:8:20","type":""}]},{"nodeType":"YulAssignment","src":"2775:18:20","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"2785:8:20"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"2775:6:20"}]},{"nodeType":"YulAssignment","src":"2802:18:20","value":{"name":"value5_1","nodeType":"YulIdentifier","src":"2812:8:20"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"2802:6:20"}]},{"nodeType":"YulVariableDeclaration","src":"2829:49:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2862:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"2873:3:20","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2858:3:20"},"nodeType":"YulFunctionCall","src":"2858:19:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2845:12:20"},"nodeType":"YulFunctionCall","src":"2845:33:20"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"2833:8:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"2907:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2916:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2919:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2909:6:20"},"nodeType":"YulFunctionCall","src":"2909:12:20"},"nodeType":"YulExpressionStatement","src":"2909:12:20"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"2893:8:20"},{"name":"_1","nodeType":"YulIdentifier","src":"2903:2:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2890:2:20"},"nodeType":"YulFunctionCall","src":"2890:16:20"},"nodeType":"YulIf","src":"2887:36:20"},{"nodeType":"YulVariableDeclaration","src":"2932:34:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2946:9:20"},{"name":"offset_1","nodeType":"YulIdentifier","src":"2957:8:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2942:3:20"},"nodeType":"YulFunctionCall","src":"2942:24:20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2936:2:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"3014:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3023:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3026:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3016:6:20"},"nodeType":"YulFunctionCall","src":"3016:12:20"},"nodeType":"YulExpressionStatement","src":"3016:12:20"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"2993:2:20"},{"kind":"number","nodeType":"YulLiteral","src":"2997:4:20","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2989:3:20"},"nodeType":"YulFunctionCall","src":"2989:13:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3004:7:20"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2985:3:20"},"nodeType":"YulFunctionCall","src":"2985:27:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2978:6:20"},"nodeType":"YulFunctionCall","src":"2978:35:20"},"nodeType":"YulIf","src":"2975:55:20"},{"nodeType":"YulVariableDeclaration","src":"3039:30:20","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3066:2:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3053:12:20"},"nodeType":"YulFunctionCall","src":"3053:16:20"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3043:6:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"3096:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3105:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3108:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3098:6:20"},"nodeType":"YulFunctionCall","src":"3098:12:20"},"nodeType":"YulExpressionStatement","src":"3098:12:20"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3084:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"3092:2:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3081:2:20"},"nodeType":"YulFunctionCall","src":"3081:14:20"},"nodeType":"YulIf","src":"3078:34:20"},{"body":{"nodeType":"YulBlock","src":"3170:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3179:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3182:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3172:6:20"},"nodeType":"YulFunctionCall","src":"3172:12:20"},"nodeType":"YulExpressionStatement","src":"3172:12:20"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3135:2:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3143:1:20","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"3146:6:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3139:3:20"},"nodeType":"YulFunctionCall","src":"3139:14:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3131:3:20"},"nodeType":"YulFunctionCall","src":"3131:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"3156:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3127:3:20"},"nodeType":"YulFunctionCall","src":"3127:32:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3161:7:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3124:2:20"},"nodeType":"YulFunctionCall","src":"3124:45:20"},"nodeType":"YulIf","src":"3121:65:20"},{"nodeType":"YulAssignment","src":"3195:21:20","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3209:2:20"},{"kind":"number","nodeType":"YulLiteral","src":"3213:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3205:3:20"},"nodeType":"YulFunctionCall","src":"3205:11:20"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"3195:6:20"}]},{"nodeType":"YulAssignment","src":"3225:16:20","value":{"name":"length","nodeType":"YulIdentifier","src":"3235:6:20"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"3225:6:20"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_addresst_addresst_bytes_calldata_ptrt_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2177:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2188:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2200:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2208:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2216:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2224:6:20","type":""},{"name":"value4","nodeType":"YulTypedName","src":"2232:6:20","type":""},{"name":"value5","nodeType":"YulTypedName","src":"2240:6:20","type":""},{"name":"value6","nodeType":"YulTypedName","src":"2248:6:20","type":""},{"name":"value7","nodeType":"YulTypedName","src":"2256:6:20","type":""}],"src":"2047:1200:20"},{"body":{"nodeType":"YulBlock","src":"3322:110:20","statements":[{"body":{"nodeType":"YulBlock","src":"3368:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3377:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3380:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3370:6:20"},"nodeType":"YulFunctionCall","src":"3370:12:20"},"nodeType":"YulExpressionStatement","src":"3370:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3343:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"3352:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3339:3:20"},"nodeType":"YulFunctionCall","src":"3339:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"3364:2:20","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3335:3:20"},"nodeType":"YulFunctionCall","src":"3335:32:20"},"nodeType":"YulIf","src":"3332:52:20"},{"nodeType":"YulAssignment","src":"3393:33:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3416:9:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3403:12:20"},"nodeType":"YulFunctionCall","src":"3403:23:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3393:6:20"}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3288:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3299:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3311:6:20","type":""}],"src":"3252:180:20"},{"body":{"nodeType":"YulBlock","src":"3524:167:20","statements":[{"body":{"nodeType":"YulBlock","src":"3570:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3579:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3582:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3572:6:20"},"nodeType":"YulFunctionCall","src":"3572:12:20"},"nodeType":"YulExpressionStatement","src":"3572:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3545:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"3554:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3541:3:20"},"nodeType":"YulFunctionCall","src":"3541:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"3566:2:20","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3537:3:20"},"nodeType":"YulFunctionCall","src":"3537:32:20"},"nodeType":"YulIf","src":"3534:52:20"},{"nodeType":"YulAssignment","src":"3595:33:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3618:9:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3605:12:20"},"nodeType":"YulFunctionCall","src":"3605:23:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3595:6:20"}]},{"nodeType":"YulAssignment","src":"3637:48:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3670:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"3681:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3666:3:20"},"nodeType":"YulFunctionCall","src":"3666:18:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3647:18:20"},"nodeType":"YulFunctionCall","src":"3647:38:20"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3637:6:20"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3482:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3493:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3505:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3513:6:20","type":""}],"src":"3437:254:20"},{"body":{"nodeType":"YulBlock","src":"3728:152:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3745:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3748:77:20","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3738:6:20"},"nodeType":"YulFunctionCall","src":"3738:88:20"},"nodeType":"YulExpressionStatement","src":"3738:88:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3842:1:20","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3845:4:20","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3835:6:20"},"nodeType":"YulFunctionCall","src":"3835:15:20"},"nodeType":"YulExpressionStatement","src":"3835:15:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3866:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3869:4:20","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3859:6:20"},"nodeType":"YulFunctionCall","src":"3859:15:20"},"nodeType":"YulExpressionStatement","src":"3859:15:20"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3696:184:20"},{"body":{"nodeType":"YulBlock","src":"3981:899:20","statements":[{"body":{"nodeType":"YulBlock","src":"4027:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4036:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4039:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4029:6:20"},"nodeType":"YulFunctionCall","src":"4029:12:20"},"nodeType":"YulExpressionStatement","src":"4029:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4002:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"4011:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3998:3:20"},"nodeType":"YulFunctionCall","src":"3998:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"4023:2:20","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3994:3:20"},"nodeType":"YulFunctionCall","src":"3994:32:20"},"nodeType":"YulIf","src":"3991:52:20"},{"nodeType":"YulAssignment","src":"4052:39:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4081:9:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4062:18:20"},"nodeType":"YulFunctionCall","src":"4062:29:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4052:6:20"}]},{"nodeType":"YulVariableDeclaration","src":"4100:46:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4131:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"4142:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4127:3:20"},"nodeType":"YulFunctionCall","src":"4127:18:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4114:12:20"},"nodeType":"YulFunctionCall","src":"4114:32:20"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4104:6:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4155:28:20","value":{"kind":"number","nodeType":"YulLiteral","src":"4165:18:20","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4159:2:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"4210:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4219:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4222:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4212:6:20"},"nodeType":"YulFunctionCall","src":"4212:12:20"},"nodeType":"YulExpressionStatement","src":"4212:12:20"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4198:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"4206:2:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4195:2:20"},"nodeType":"YulFunctionCall","src":"4195:14:20"},"nodeType":"YulIf","src":"4192:34:20"},{"nodeType":"YulVariableDeclaration","src":"4235:32:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4249:9:20"},{"name":"offset","nodeType":"YulIdentifier","src":"4260:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4245:3:20"},"nodeType":"YulFunctionCall","src":"4245:22:20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4239:2:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"4315:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4324:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4327:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4317:6:20"},"nodeType":"YulFunctionCall","src":"4317:12:20"},"nodeType":"YulExpressionStatement","src":"4317:12:20"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4294:2:20"},{"kind":"number","nodeType":"YulLiteral","src":"4298:4:20","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4290:3:20"},"nodeType":"YulFunctionCall","src":"4290:13:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4305:7:20"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4286:3:20"},"nodeType":"YulFunctionCall","src":"4286:27:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4279:6:20"},"nodeType":"YulFunctionCall","src":"4279:35:20"},"nodeType":"YulIf","src":"4276:55:20"},{"nodeType":"YulVariableDeclaration","src":"4340:26:20","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4363:2:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4350:12:20"},"nodeType":"YulFunctionCall","src":"4350:16:20"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4344:2:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"4389:22:20","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4391:16:20"},"nodeType":"YulFunctionCall","src":"4391:18:20"},"nodeType":"YulExpressionStatement","src":"4391:18:20"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4381:2:20"},{"name":"_1","nodeType":"YulIdentifier","src":"4385:2:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4378:2:20"},"nodeType":"YulFunctionCall","src":"4378:10:20"},"nodeType":"YulIf","src":"4375:36:20"},{"nodeType":"YulVariableDeclaration","src":"4420:17:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4434:2:20","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4430:3:20"},"nodeType":"YulFunctionCall","src":"4430:7:20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4424:2:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4446:23:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4466:2:20","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4460:5:20"},"nodeType":"YulFunctionCall","src":"4460:9:20"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4450:6:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4478:71:20","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4500:6:20"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4524:2:20"},{"kind":"number","nodeType":"YulLiteral","src":"4528:4:20","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4520:3:20"},"nodeType":"YulFunctionCall","src":"4520:13:20"},{"name":"_4","nodeType":"YulIdentifier","src":"4535:2:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4516:3:20"},"nodeType":"YulFunctionCall","src":"4516:22:20"},{"kind":"number","nodeType":"YulLiteral","src":"4540:2:20","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4512:3:20"},"nodeType":"YulFunctionCall","src":"4512:31:20"},{"name":"_4","nodeType":"YulIdentifier","src":"4545:2:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4508:3:20"},"nodeType":"YulFunctionCall","src":"4508:40:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4496:3:20"},"nodeType":"YulFunctionCall","src":"4496:53:20"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4482:10:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"4608:22:20","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4610:16:20"},"nodeType":"YulFunctionCall","src":"4610:18:20"},"nodeType":"YulExpressionStatement","src":"4610:18:20"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4567:10:20"},{"name":"_1","nodeType":"YulIdentifier","src":"4579:2:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4564:2:20"},"nodeType":"YulFunctionCall","src":"4564:18:20"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4587:10:20"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4599:6:20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4584:2:20"},"nodeType":"YulFunctionCall","src":"4584:22:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4561:2:20"},"nodeType":"YulFunctionCall","src":"4561:46:20"},"nodeType":"YulIf","src":"4558:72:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4646:2:20","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4650:10:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4639:6:20"},"nodeType":"YulFunctionCall","src":"4639:22:20"},"nodeType":"YulExpressionStatement","src":"4639:22:20"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4677:6:20"},{"name":"_3","nodeType":"YulIdentifier","src":"4685:2:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4670:6:20"},"nodeType":"YulFunctionCall","src":"4670:18:20"},"nodeType":"YulExpressionStatement","src":"4670:18:20"},{"body":{"nodeType":"YulBlock","src":"4734:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4743:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4746:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4736:6:20"},"nodeType":"YulFunctionCall","src":"4736:12:20"},"nodeType":"YulExpressionStatement","src":"4736:12:20"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4711:2:20"},{"name":"_3","nodeType":"YulIdentifier","src":"4715:2:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4707:3:20"},"nodeType":"YulFunctionCall","src":"4707:11:20"},{"kind":"number","nodeType":"YulLiteral","src":"4720:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4703:3:20"},"nodeType":"YulFunctionCall","src":"4703:20:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4725:7:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4700:2:20"},"nodeType":"YulFunctionCall","src":"4700:33:20"},"nodeType":"YulIf","src":"4697:53:20"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4776:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"4784:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4772:3:20"},"nodeType":"YulFunctionCall","src":"4772:15:20"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4793:2:20"},{"kind":"number","nodeType":"YulLiteral","src":"4797:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4789:3:20"},"nodeType":"YulFunctionCall","src":"4789:11:20"},{"name":"_3","nodeType":"YulIdentifier","src":"4802:2:20"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4759:12:20"},"nodeType":"YulFunctionCall","src":"4759:46:20"},"nodeType":"YulExpressionStatement","src":"4759:46:20"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4829:6:20"},{"name":"_3","nodeType":"YulIdentifier","src":"4837:2:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4825:3:20"},"nodeType":"YulFunctionCall","src":"4825:15:20"},{"kind":"number","nodeType":"YulLiteral","src":"4842:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4821:3:20"},"nodeType":"YulFunctionCall","src":"4821:24:20"},{"kind":"number","nodeType":"YulLiteral","src":"4847:1:20","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4814:6:20"},"nodeType":"YulFunctionCall","src":"4814:35:20"},"nodeType":"YulExpressionStatement","src":"4814:35:20"},{"nodeType":"YulAssignment","src":"4858:16:20","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4868:6:20"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4858:6:20"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3939:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3950:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3962:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3970:6:20","type":""}],"src":"3885:995:20"},{"body":{"nodeType":"YulBlock","src":"4986:76:20","statements":[{"nodeType":"YulAssignment","src":"4996:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5008:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"5019:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5004:3:20"},"nodeType":"YulFunctionCall","src":"5004:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4996:4:20"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5038:9:20"},{"name":"value0","nodeType":"YulIdentifier","src":"5049:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5031:6:20"},"nodeType":"YulFunctionCall","src":"5031:25:20"},"nodeType":"YulExpressionStatement","src":"5031:25:20"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4955:9:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4966:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4977:4:20","type":""}],"src":"4885:177:20"},{"body":{"nodeType":"YulBlock","src":"5190:428:20","statements":[{"body":{"nodeType":"YulBlock","src":"5236:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5245:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5248:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5238:6:20"},"nodeType":"YulFunctionCall","src":"5238:12:20"},"nodeType":"YulExpressionStatement","src":"5238:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5211:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"5220:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5207:3:20"},"nodeType":"YulFunctionCall","src":"5207:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"5232:2:20","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5203:3:20"},"nodeType":"YulFunctionCall","src":"5203:32:20"},"nodeType":"YulIf","src":"5200:52:20"},{"nodeType":"YulAssignment","src":"5261:33:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5284:9:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5271:12:20"},"nodeType":"YulFunctionCall","src":"5271:23:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5261:6:20"}]},{"nodeType":"YulAssignment","src":"5303:48:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5336:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"5347:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5332:3:20"},"nodeType":"YulFunctionCall","src":"5332:18:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"5313:18:20"},"nodeType":"YulFunctionCall","src":"5313:38:20"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5303:6:20"}]},{"nodeType":"YulVariableDeclaration","src":"5360:46:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5391:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"5402:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5387:3:20"},"nodeType":"YulFunctionCall","src":"5387:18:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"5374:12:20"},"nodeType":"YulFunctionCall","src":"5374:32:20"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5364:6:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"5449:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5458:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5461:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5451:6:20"},"nodeType":"YulFunctionCall","src":"5451:12:20"},"nodeType":"YulExpressionStatement","src":"5451:12:20"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5421:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"5429:18:20","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5418:2:20"},"nodeType":"YulFunctionCall","src":"5418:30:20"},"nodeType":"YulIf","src":"5415:50:20"},{"nodeType":"YulVariableDeclaration","src":"5474:84:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5530:9:20"},{"name":"offset","nodeType":"YulIdentifier","src":"5541:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5526:3:20"},"nodeType":"YulFunctionCall","src":"5526:22:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5550:7:20"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"5500:25:20"},"nodeType":"YulFunctionCall","src":"5500:58:20"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"5478:8:20","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"5488:8:20","type":""}]},{"nodeType":"YulAssignment","src":"5567:18:20","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"5577:8:20"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5567:6:20"}]},{"nodeType":"YulAssignment","src":"5594:18:20","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"5604:8:20"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"5594:6:20"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5132:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5143:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5155:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5163:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5171:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5179:6:20","type":""}],"src":"5067:551:20"},{"body":{"nodeType":"YulBlock","src":"5689:184:20","statements":[{"nodeType":"YulVariableDeclaration","src":"5699:10:20","value":{"kind":"number","nodeType":"YulLiteral","src":"5708:1:20","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5703:1:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"5768:63:20","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5793:3:20"},{"name":"i","nodeType":"YulIdentifier","src":"5798:1:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5789:3:20"},"nodeType":"YulFunctionCall","src":"5789:11:20"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5812:3:20"},{"name":"i","nodeType":"YulIdentifier","src":"5817:1:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5808:3:20"},"nodeType":"YulFunctionCall","src":"5808:11:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5802:5:20"},"nodeType":"YulFunctionCall","src":"5802:18:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5782:6:20"},"nodeType":"YulFunctionCall","src":"5782:39:20"},"nodeType":"YulExpressionStatement","src":"5782:39:20"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5729:1:20"},{"name":"length","nodeType":"YulIdentifier","src":"5732:6:20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5726:2:20"},"nodeType":"YulFunctionCall","src":"5726:13:20"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5740:19:20","statements":[{"nodeType":"YulAssignment","src":"5742:15:20","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5751:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"5754:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5747:3:20"},"nodeType":"YulFunctionCall","src":"5747:10:20"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5742:1:20"}]}]},"pre":{"nodeType":"YulBlock","src":"5722:3:20","statements":[]},"src":"5718:113:20"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5851:3:20"},{"name":"length","nodeType":"YulIdentifier","src":"5856:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5847:3:20"},"nodeType":"YulFunctionCall","src":"5847:16:20"},{"kind":"number","nodeType":"YulLiteral","src":"5865:1:20","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5840:6:20"},"nodeType":"YulFunctionCall","src":"5840:27:20"},"nodeType":"YulExpressionStatement","src":"5840:27:20"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5667:3:20","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5672:3:20","type":""},{"name":"length","nodeType":"YulTypedName","src":"5677:6:20","type":""}],"src":"5623:250:20"},{"body":{"nodeType":"YulBlock","src":"5928:221:20","statements":[{"nodeType":"YulVariableDeclaration","src":"5938:26:20","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5958:5:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5952:5:20"},"nodeType":"YulFunctionCall","src":"5952:12:20"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5942:6:20","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5980:3:20"},{"name":"length","nodeType":"YulIdentifier","src":"5985:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5973:6:20"},"nodeType":"YulFunctionCall","src":"5973:19:20"},"nodeType":"YulExpressionStatement","src":"5973:19:20"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6040:5:20"},{"kind":"number","nodeType":"YulLiteral","src":"6047:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6036:3:20"},"nodeType":"YulFunctionCall","src":"6036:16:20"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6058:3:20"},{"kind":"number","nodeType":"YulLiteral","src":"6063:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6054:3:20"},"nodeType":"YulFunctionCall","src":"6054:14:20"},{"name":"length","nodeType":"YulIdentifier","src":"6070:6:20"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6001:34:20"},"nodeType":"YulFunctionCall","src":"6001:76:20"},"nodeType":"YulExpressionStatement","src":"6001:76:20"},{"nodeType":"YulAssignment","src":"6086:57:20","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6101:3:20"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6114:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"6122:2:20","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6110:3:20"},"nodeType":"YulFunctionCall","src":"6110:15:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6131:2:20","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6127:3:20"},"nodeType":"YulFunctionCall","src":"6127:7:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6106:3:20"},"nodeType":"YulFunctionCall","src":"6106:29:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6097:3:20"},"nodeType":"YulFunctionCall","src":"6097:39:20"},{"kind":"number","nodeType":"YulLiteral","src":"6138:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6093:3:20"},"nodeType":"YulFunctionCall","src":"6093:50:20"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6086:3:20"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5905:5:20","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5912:3:20","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5920:3:20","type":""}],"src":"5878:271:20"},{"body":{"nodeType":"YulBlock","src":"6511:978:20","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6528:9:20"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6543:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"6551:66:20","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6539:3:20"},"nodeType":"YulFunctionCall","src":"6539:79:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6521:6:20"},"nodeType":"YulFunctionCall","src":"6521:98:20"},"nodeType":"YulExpressionStatement","src":"6521:98:20"},{"nodeType":"YulVariableDeclaration","src":"6628:12:20","value":{"kind":"number","nodeType":"YulLiteral","src":"6638:2:20","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6632:2:20","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6660:9:20"},{"name":"_1","nodeType":"YulIdentifier","src":"6671:2:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6656:3:20"},"nodeType":"YulFunctionCall","src":"6656:18:20"},{"kind":"number","nodeType":"YulLiteral","src":"6676:3:20","type":"","value":"224"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6649:6:20"},"nodeType":"YulFunctionCall","src":"6649:31:20"},"nodeType":"YulExpressionStatement","src":"6649:31:20"},{"nodeType":"YulVariableDeclaration","src":"6689:60:20","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6721:6:20"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6733:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"6744:3:20","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6729:3:20"},"nodeType":"YulFunctionCall","src":"6729:19:20"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"6703:17:20"},"nodeType":"YulFunctionCall","src":"6703:46:20"},"variables":[{"name":"tail_1","nodeType":"YulTypedName","src":"6693:6:20","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6769:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"6780:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6765:3:20"},"nodeType":"YulFunctionCall","src":"6765:18:20"},{"arguments":[{"name":"tail_1","nodeType":"YulIdentifier","src":"6789:6:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"6797:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6785:3:20"},"nodeType":"YulFunctionCall","src":"6785:22:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6758:6:20"},"nodeType":"YulFunctionCall","src":"6758:50:20"},"nodeType":"YulExpressionStatement","src":"6758:50:20"},{"nodeType":"YulVariableDeclaration","src":"6817:47:20","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"6849:6:20"},{"name":"tail_1","nodeType":"YulIdentifier","src":"6857:6:20"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"6831:17:20"},"nodeType":"YulFunctionCall","src":"6831:33:20"},"variables":[{"name":"tail_2","nodeType":"YulTypedName","src":"6821:6:20","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6884:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"6895:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6880:3:20"},"nodeType":"YulFunctionCall","src":"6880:18:20"},{"name":"value3","nodeType":"YulIdentifier","src":"6900:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6873:6:20"},"nodeType":"YulFunctionCall","src":"6873:34:20"},"nodeType":"YulExpressionStatement","src":"6873:34:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6927:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"6938:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6923:3:20"},"nodeType":"YulFunctionCall","src":"6923:19:20"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6948:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"6956:42:20","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6944:3:20"},"nodeType":"YulFunctionCall","src":"6944:55:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6916:6:20"},"nodeType":"YulFunctionCall","src":"6916:84:20"},"nodeType":"YulExpressionStatement","src":"6916:84:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7020:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"7031:3:20","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7016:3:20"},"nodeType":"YulFunctionCall","src":"7016:19:20"},{"name":"value5","nodeType":"YulIdentifier","src":"7037:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7009:6:20"},"nodeType":"YulFunctionCall","src":"7009:35:20"},"nodeType":"YulExpressionStatement","src":"7009:35:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7064:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"7075:3:20","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7060:3:20"},"nodeType":"YulFunctionCall","src":"7060:19:20"},{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"7085:6:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"7093:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7081:3:20"},"nodeType":"YulFunctionCall","src":"7081:22:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7053:6:20"},"nodeType":"YulFunctionCall","src":"7053:51:20"},"nodeType":"YulExpressionStatement","src":"7053:51:20"},{"nodeType":"YulVariableDeclaration","src":"7113:17:20","value":{"name":"tail_2","nodeType":"YulIdentifier","src":"7124:6:20"},"variables":[{"name":"pos","nodeType":"YulTypedName","src":"7117:3:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7139:27:20","value":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"7159:6:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7153:5:20"},"nodeType":"YulFunctionCall","src":"7153:13:20"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7143:6:20","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"7182:6:20"},{"name":"length","nodeType":"YulIdentifier","src":"7190:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7175:6:20"},"nodeType":"YulFunctionCall","src":"7175:22:20"},"nodeType":"YulExpressionStatement","src":"7175:22:20"},{"nodeType":"YulAssignment","src":"7206:22:20","value":{"arguments":[{"name":"tail_2","nodeType":"YulIdentifier","src":"7217:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"7225:2:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7213:3:20"},"nodeType":"YulFunctionCall","src":"7213:15:20"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7206:3:20"}]},{"nodeType":"YulVariableDeclaration","src":"7237:29:20","value":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"7255:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"7263:2:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7251:3:20"},"nodeType":"YulFunctionCall","src":"7251:15:20"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"7241:6:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7275:10:20","value":{"kind":"number","nodeType":"YulLiteral","src":"7284:1:20","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7279:1:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"7343:120:20","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7364:3:20"},{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7375:6:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7369:5:20"},"nodeType":"YulFunctionCall","src":"7369:13:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7357:6:20"},"nodeType":"YulFunctionCall","src":"7357:26:20"},"nodeType":"YulExpressionStatement","src":"7357:26:20"},{"nodeType":"YulAssignment","src":"7396:19:20","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7407:3:20"},{"name":"_1","nodeType":"YulIdentifier","src":"7412:2:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7403:3:20"},"nodeType":"YulFunctionCall","src":"7403:12:20"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7396:3:20"}]},{"nodeType":"YulAssignment","src":"7428:25:20","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7442:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"7450:2:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7438:3:20"},"nodeType":"YulFunctionCall","src":"7438:15:20"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7428:6:20"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7305:1:20"},{"name":"length","nodeType":"YulIdentifier","src":"7308:6:20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7302:2:20"},"nodeType":"YulFunctionCall","src":"7302:13:20"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7316:18:20","statements":[{"nodeType":"YulAssignment","src":"7318:14:20","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7327:1:20"},{"kind":"number","nodeType":"YulLiteral","src":"7330:1:20","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7323:3:20"},"nodeType":"YulFunctionCall","src":"7323:9:20"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7318:1:20"}]}]},"pre":{"nodeType":"YulBlock","src":"7298:3:20","statements":[]},"src":"7294:169:20"},{"nodeType":"YulAssignment","src":"7472:11:20","value":{"name":"pos","nodeType":"YulIdentifier","src":"7480:3:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7472:4:20"}]}]},"name":"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6432:9:20","type":""},{"name":"value6","nodeType":"YulTypedName","src":"6443:6:20","type":""},{"name":"value5","nodeType":"YulTypedName","src":"6451:6:20","type":""},{"name":"value4","nodeType":"YulTypedName","src":"6459:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"6467:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"6475:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6483:6:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6491:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6502:4:20","type":""}],"src":"6154:1335:20"},{"body":{"nodeType":"YulBlock","src":"7615:99:20","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7632:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"7643:2:20","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7625:6:20"},"nodeType":"YulFunctionCall","src":"7625:21:20"},"nodeType":"YulExpressionStatement","src":"7625:21:20"},{"nodeType":"YulAssignment","src":"7655:53:20","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7681:6:20"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7693:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"7704:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7689:3:20"},"nodeType":"YulFunctionCall","src":"7689:18:20"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"7663:17:20"},"nodeType":"YulFunctionCall","src":"7663:45:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7655:4:20"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7584:9:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7595:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7606:4:20","type":""}],"src":"7494:220:20"},{"body":{"nodeType":"YulBlock","src":"7929:863:20","statements":[{"body":{"nodeType":"YulBlock","src":"7976:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7985:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7988:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7978:6:20"},"nodeType":"YulFunctionCall","src":"7978:12:20"},"nodeType":"YulExpressionStatement","src":"7978:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7950:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"7959:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7946:3:20"},"nodeType":"YulFunctionCall","src":"7946:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"7971:3:20","type":"","value":"224"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7942:3:20"},"nodeType":"YulFunctionCall","src":"7942:33:20"},"nodeType":"YulIf","src":"7939:53:20"},{"nodeType":"YulAssignment","src":"8001:33:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8024:9:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8011:12:20"},"nodeType":"YulFunctionCall","src":"8011:23:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8001:6:20"}]},{"nodeType":"YulAssignment","src":"8043:42:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8070:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"8081:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8066:3:20"},"nodeType":"YulFunctionCall","src":"8066:18:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8053:12:20"},"nodeType":"YulFunctionCall","src":"8053:32:20"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"8043:6:20"}]},{"nodeType":"YulAssignment","src":"8094:48:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8127:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"8138:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8123:3:20"},"nodeType":"YulFunctionCall","src":"8123:18:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8104:18:20"},"nodeType":"YulFunctionCall","src":"8104:38:20"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"8094:6:20"}]},{"nodeType":"YulAssignment","src":"8151:42:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8178:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"8189:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8174:3:20"},"nodeType":"YulFunctionCall","src":"8174:18:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8161:12:20"},"nodeType":"YulFunctionCall","src":"8161:32:20"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"8151:6:20"}]},{"nodeType":"YulAssignment","src":"8202:49:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8235:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"8246:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8231:3:20"},"nodeType":"YulFunctionCall","src":"8231:19:20"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"8212:18:20"},"nodeType":"YulFunctionCall","src":"8212:39:20"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"8202:6:20"}]},{"nodeType":"YulVariableDeclaration","src":"8260:47:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8291:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"8302:3:20","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8287:3:20"},"nodeType":"YulFunctionCall","src":"8287:19:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8274:12:20"},"nodeType":"YulFunctionCall","src":"8274:33:20"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8264:6:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8316:28:20","value":{"kind":"number","nodeType":"YulLiteral","src":"8326:18:20","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"8320:2:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"8371:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8380:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8383:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8373:6:20"},"nodeType":"YulFunctionCall","src":"8373:12:20"},"nodeType":"YulExpressionStatement","src":"8373:12:20"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8359:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"8367:2:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8356:2:20"},"nodeType":"YulFunctionCall","src":"8356:14:20"},"nodeType":"YulIf","src":"8353:34:20"},{"nodeType":"YulVariableDeclaration","src":"8396:84:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8452:9:20"},{"name":"offset","nodeType":"YulIdentifier","src":"8463:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8448:3:20"},"nodeType":"YulFunctionCall","src":"8448:22:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8472:7:20"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"8422:25:20"},"nodeType":"YulFunctionCall","src":"8422:58:20"},"variables":[{"name":"value5_1","nodeType":"YulTypedName","src":"8400:8:20","type":""},{"name":"value6_1","nodeType":"YulTypedName","src":"8410:8:20","type":""}]},{"nodeType":"YulAssignment","src":"8489:18:20","value":{"name":"value5_1","nodeType":"YulIdentifier","src":"8499:8:20"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"8489:6:20"}]},{"nodeType":"YulAssignment","src":"8516:18:20","value":{"name":"value6_1","nodeType":"YulIdentifier","src":"8526:8:20"},"variableNames":[{"name":"value6","nodeType":"YulIdentifier","src":"8516:6:20"}]},{"nodeType":"YulVariableDeclaration","src":"8543:49:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8576:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"8587:3:20","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8572:3:20"},"nodeType":"YulFunctionCall","src":"8572:19:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8559:12:20"},"nodeType":"YulFunctionCall","src":"8559:33:20"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"8547:8:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"8621:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8630:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8633:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8623:6:20"},"nodeType":"YulFunctionCall","src":"8623:12:20"},"nodeType":"YulExpressionStatement","src":"8623:12:20"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"8607:8:20"},{"name":"_1","nodeType":"YulIdentifier","src":"8617:2:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8604:2:20"},"nodeType":"YulFunctionCall","src":"8604:16:20"},"nodeType":"YulIf","src":"8601:36:20"},{"nodeType":"YulVariableDeclaration","src":"8646:86:20","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8702:9:20"},{"name":"offset_1","nodeType":"YulIdentifier","src":"8713:8:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8698:3:20"},"nodeType":"YulFunctionCall","src":"8698:24:20"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"8724:7:20"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"8672:25:20"},"nodeType":"YulFunctionCall","src":"8672:60:20"},"variables":[{"name":"value7_1","nodeType":"YulTypedName","src":"8650:8:20","type":""},{"name":"value8_1","nodeType":"YulTypedName","src":"8660:8:20","type":""}]},{"nodeType":"YulAssignment","src":"8741:18:20","value":{"name":"value7_1","nodeType":"YulIdentifier","src":"8751:8:20"},"variableNames":[{"name":"value7","nodeType":"YulIdentifier","src":"8741:6:20"}]},{"nodeType":"YulAssignment","src":"8768:18:20","value":{"name":"value8_1","nodeType":"YulIdentifier","src":"8778:8:20"},"variableNames":[{"name":"value8","nodeType":"YulIdentifier","src":"8768:6:20"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7831:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"7842:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7854:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7862:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7870:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"7878:6:20","type":""},{"name":"value4","nodeType":"YulTypedName","src":"7886:6:20","type":""},{"name":"value5","nodeType":"YulTypedName","src":"7894:6:20","type":""},{"name":"value6","nodeType":"YulTypedName","src":"7902:6:20","type":""},{"name":"value7","nodeType":"YulTypedName","src":"7910:6:20","type":""},{"name":"value8","nodeType":"YulTypedName","src":"7918:6:20","type":""}],"src":"7719:1073:20"},{"body":{"nodeType":"YulBlock","src":"8867:110:20","statements":[{"body":{"nodeType":"YulBlock","src":"8913:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8922:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8925:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8915:6:20"},"nodeType":"YulFunctionCall","src":"8915:12:20"},"nodeType":"YulExpressionStatement","src":"8915:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8888:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"8897:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8884:3:20"},"nodeType":"YulFunctionCall","src":"8884:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"8909:2:20","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8880:3:20"},"nodeType":"YulFunctionCall","src":"8880:32:20"},"nodeType":"YulIf","src":"8877:52:20"},{"nodeType":"YulAssignment","src":"8938:33:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8961:9:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8948:12:20"},"nodeType":"YulFunctionCall","src":"8948:23:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"8938:6:20"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8833:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8844:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8856:6:20","type":""}],"src":"8797:180:20"},{"body":{"nodeType":"YulBlock","src":"9048:200:20","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9065:3:20"},{"name":"length","nodeType":"YulIdentifier","src":"9070:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9058:6:20"},"nodeType":"YulFunctionCall","src":"9058:19:20"},"nodeType":"YulExpressionStatement","src":"9058:19:20"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9103:3:20"},{"kind":"number","nodeType":"YulLiteral","src":"9108:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9099:3:20"},"nodeType":"YulFunctionCall","src":"9099:14:20"},{"name":"start","nodeType":"YulIdentifier","src":"9115:5:20"},{"name":"length","nodeType":"YulIdentifier","src":"9122:6:20"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"9086:12:20"},"nodeType":"YulFunctionCall","src":"9086:43:20"},"nodeType":"YulExpressionStatement","src":"9086:43:20"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9153:3:20"},{"name":"length","nodeType":"YulIdentifier","src":"9158:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9149:3:20"},"nodeType":"YulFunctionCall","src":"9149:16:20"},{"kind":"number","nodeType":"YulLiteral","src":"9167:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9145:3:20"},"nodeType":"YulFunctionCall","src":"9145:27:20"},{"kind":"number","nodeType":"YulLiteral","src":"9174:1:20","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9138:6:20"},"nodeType":"YulFunctionCall","src":"9138:38:20"},"nodeType":"YulExpressionStatement","src":"9138:38:20"},{"nodeType":"YulAssignment","src":"9185:57:20","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9200:3:20"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9213:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"9221:2:20","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9209:3:20"},"nodeType":"YulFunctionCall","src":"9209:15:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9230:2:20","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9226:3:20"},"nodeType":"YulFunctionCall","src":"9226:7:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9205:3:20"},"nodeType":"YulFunctionCall","src":"9205:29:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9196:3:20"},"nodeType":"YulFunctionCall","src":"9196:39:20"},{"kind":"number","nodeType":"YulLiteral","src":"9237:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9192:3:20"},"nodeType":"YulFunctionCall","src":"9192:50:20"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9185:3:20"}]}]},"name":"abi_encode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nodeType":"YulTypedName","src":"9017:5:20","type":""},{"name":"length","nodeType":"YulTypedName","src":"9024:6:20","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9032:3:20","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9040:3:20","type":""}],"src":"8982:266:20"},{"body":{"nodeType":"YulBlock","src":"9550:457:20","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9567:9:20"},{"name":"value0","nodeType":"YulIdentifier","src":"9578:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9560:6:20"},"nodeType":"YulFunctionCall","src":"9560:25:20"},"nodeType":"YulExpressionStatement","src":"9560:25:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9605:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"9616:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9601:3:20"},"nodeType":"YulFunctionCall","src":"9601:18:20"},{"name":"value1","nodeType":"YulIdentifier","src":"9621:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9594:6:20"},"nodeType":"YulFunctionCall","src":"9594:34:20"},"nodeType":"YulExpressionStatement","src":"9594:34:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9648:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"9659:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9644:3:20"},"nodeType":"YulFunctionCall","src":"9644:18:20"},{"name":"value2","nodeType":"YulIdentifier","src":"9664:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9637:6:20"},"nodeType":"YulFunctionCall","src":"9637:34:20"},"nodeType":"YulExpressionStatement","src":"9637:34:20"},{"nodeType":"YulVariableDeclaration","src":"9680:52:20","value":{"kind":"number","nodeType":"YulLiteral","src":"9690:42:20","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9684:2:20","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9752:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"9763:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9748:3:20"},"nodeType":"YulFunctionCall","src":"9748:18:20"},{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"9772:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"9780:2:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9768:3:20"},"nodeType":"YulFunctionCall","src":"9768:15:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9741:6:20"},"nodeType":"YulFunctionCall","src":"9741:43:20"},"nodeType":"YulExpressionStatement","src":"9741:43:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9804:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"9815:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9800:3:20"},"nodeType":"YulFunctionCall","src":"9800:19:20"},{"name":"value4","nodeType":"YulIdentifier","src":"9821:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9793:6:20"},"nodeType":"YulFunctionCall","src":"9793:35:20"},"nodeType":"YulExpressionStatement","src":"9793:35:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9848:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"9859:3:20","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9844:3:20"},"nodeType":"YulFunctionCall","src":"9844:19:20"},{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"9869:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"9877:2:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9865:3:20"},"nodeType":"YulFunctionCall","src":"9865:15:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9837:6:20"},"nodeType":"YulFunctionCall","src":"9837:44:20"},"nodeType":"YulExpressionStatement","src":"9837:44:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9901:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"9912:3:20","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9897:3:20"},"nodeType":"YulFunctionCall","src":"9897:19:20"},{"kind":"number","nodeType":"YulLiteral","src":"9918:3:20","type":"","value":"224"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9890:6:20"},"nodeType":"YulFunctionCall","src":"9890:32:20"},"nodeType":"YulExpressionStatement","src":"9890:32:20"},{"nodeType":"YulAssignment","src":"9931:70:20","value":{"arguments":[{"name":"value6","nodeType":"YulIdentifier","src":"9965:6:20"},{"name":"value7","nodeType":"YulIdentifier","src":"9973:6:20"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9985:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"9996:3:20","type":"","value":"224"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9981:3:20"},"nodeType":"YulFunctionCall","src":"9981:19:20"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"9939:25:20"},"nodeType":"YulFunctionCall","src":"9939:62:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9931:4:20"}]}]},"name":"abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_calldata_ptr__to_t_bytes32_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9463:9:20","type":""},{"name":"value7","nodeType":"YulTypedName","src":"9474:6:20","type":""},{"name":"value6","nodeType":"YulTypedName","src":"9482:6:20","type":""},{"name":"value5","nodeType":"YulTypedName","src":"9490:6:20","type":""},{"name":"value4","nodeType":"YulTypedName","src":"9498:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"9506:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"9514:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"9522:6:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"9530:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9541:4:20","type":""}],"src":"9253:754:20"},{"body":{"nodeType":"YulBlock","src":"10044:152:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10061:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10064:77:20","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10054:6:20"},"nodeType":"YulFunctionCall","src":"10054:88:20"},"nodeType":"YulExpressionStatement","src":"10054:88:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10158:1:20","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10161:4:20","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10151:6:20"},"nodeType":"YulFunctionCall","src":"10151:15:20"},"nodeType":"YulExpressionStatement","src":"10151:15:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10182:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10185:4:20","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10175:6:20"},"nodeType":"YulFunctionCall","src":"10175:15:20"},"nodeType":"YulExpressionStatement","src":"10175:15:20"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"10012:184:20"},{"body":{"nodeType":"YulBlock","src":"10295:427:20","statements":[{"nodeType":"YulVariableDeclaration","src":"10305:51:20","value":{"arguments":[{"name":"ptr_to_tail","nodeType":"YulIdentifier","src":"10344:11:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10331:12:20"},"nodeType":"YulFunctionCall","src":"10331:25:20"},"variables":[{"name":"rel_offset_of_tail","nodeType":"YulTypedName","src":"10309:18:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"10445:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10454:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10457:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10447:6:20"},"nodeType":"YulFunctionCall","src":"10447:12:20"},"nodeType":"YulExpressionStatement","src":"10447:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"10379:18:20"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"10407:12:20"},"nodeType":"YulFunctionCall","src":"10407:14:20"},{"name":"base_ref","nodeType":"YulIdentifier","src":"10423:8:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10403:3:20"},"nodeType":"YulFunctionCall","src":"10403:29:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10438:2:20","type":"","value":"30"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10434:3:20"},"nodeType":"YulFunctionCall","src":"10434:7:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10399:3:20"},"nodeType":"YulFunctionCall","src":"10399:43:20"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10375:3:20"},"nodeType":"YulFunctionCall","src":"10375:68:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10368:6:20"},"nodeType":"YulFunctionCall","src":"10368:76:20"},"nodeType":"YulIf","src":"10365:96:20"},{"nodeType":"YulVariableDeclaration","src":"10470:47:20","value":{"arguments":[{"name":"base_ref","nodeType":"YulIdentifier","src":"10488:8:20"},{"name":"rel_offset_of_tail","nodeType":"YulIdentifier","src":"10498:18:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10484:3:20"},"nodeType":"YulFunctionCall","src":"10484:33:20"},"variables":[{"name":"addr_1","nodeType":"YulTypedName","src":"10474:6:20","type":""}]},{"nodeType":"YulAssignment","src":"10526:30:20","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"10549:6:20"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10536:12:20"},"nodeType":"YulFunctionCall","src":"10536:20:20"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"10526:6:20"}]},{"body":{"nodeType":"YulBlock","src":"10599:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10608:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10611:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10601:6:20"},"nodeType":"YulFunctionCall","src":"10601:12:20"},"nodeType":"YulExpressionStatement","src":"10601:12:20"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10571:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"10579:18:20","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10568:2:20"},"nodeType":"YulFunctionCall","src":"10568:30:20"},"nodeType":"YulIf","src":"10565:50:20"},{"nodeType":"YulAssignment","src":"10624:25:20","value":{"arguments":[{"name":"addr_1","nodeType":"YulIdentifier","src":"10636:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"10644:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10632:3:20"},"nodeType":"YulFunctionCall","src":"10632:17:20"},"variableNames":[{"name":"addr","nodeType":"YulIdentifier","src":"10624:4:20"}]},{"body":{"nodeType":"YulBlock","src":"10700:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10709:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10712:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10702:6:20"},"nodeType":"YulFunctionCall","src":"10702:12:20"},"nodeType":"YulExpressionStatement","src":"10702:12:20"}]},"condition":{"arguments":[{"name":"addr","nodeType":"YulIdentifier","src":"10665:4:20"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"10675:12:20"},"nodeType":"YulFunctionCall","src":"10675:14:20"},{"name":"length","nodeType":"YulIdentifier","src":"10691:6:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10671:3:20"},"nodeType":"YulFunctionCall","src":"10671:27:20"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"10661:3:20"},"nodeType":"YulFunctionCall","src":"10661:38:20"},"nodeType":"YulIf","src":"10658:58:20"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nodeType":"YulTypedName","src":"10252:8:20","type":""},{"name":"ptr_to_tail","nodeType":"YulTypedName","src":"10262:11:20","type":""}],"returnVariables":[{"name":"addr","nodeType":"YulTypedName","src":"10278:4:20","type":""},{"name":"length","nodeType":"YulTypedName","src":"10284:6:20","type":""}],"src":"10201:521:20"},{"body":{"nodeType":"YulBlock","src":"10759:152:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10776:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10779:77:20","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10769:6:20"},"nodeType":"YulFunctionCall","src":"10769:88:20"},"nodeType":"YulExpressionStatement","src":"10769:88:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10873:1:20","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10876:4:20","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10866:6:20"},"nodeType":"YulFunctionCall","src":"10866:15:20"},"nodeType":"YulExpressionStatement","src":"10866:15:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10897:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10900:4:20","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10890:6:20"},"nodeType":"YulFunctionCall","src":"10890:15:20"},"nodeType":"YulExpressionStatement","src":"10890:15:20"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"10727:184:20"},{"body":{"nodeType":"YulBlock","src":"10964:77:20","statements":[{"nodeType":"YulAssignment","src":"10974:16:20","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10985:1:20"},{"name":"y","nodeType":"YulIdentifier","src":"10988:1:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10981:3:20"},"nodeType":"YulFunctionCall","src":"10981:9:20"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10974:3:20"}]},{"body":{"nodeType":"YulBlock","src":"11013:22:20","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11015:16:20"},"nodeType":"YulFunctionCall","src":"11015:18:20"},"nodeType":"YulExpressionStatement","src":"11015:18:20"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"11005:1:20"},{"name":"sum","nodeType":"YulIdentifier","src":"11008:3:20"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11002:2:20"},"nodeType":"YulFunctionCall","src":"11002:10:20"},"nodeType":"YulIf","src":"10999:36:20"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10947:1:20","type":""},{"name":"y","nodeType":"YulTypedName","src":"10950:1:20","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10956:3:20","type":""}],"src":"10916:125:20"},{"body":{"nodeType":"YulBlock","src":"11093:88:20","statements":[{"body":{"nodeType":"YulBlock","src":"11124:22:20","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11126:16:20"},"nodeType":"YulFunctionCall","src":"11126:18:20"},"nodeType":"YulExpressionStatement","src":"11126:18:20"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11109:5:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11120:1:20","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11116:3:20"},"nodeType":"YulFunctionCall","src":"11116:6:20"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11106:2:20"},"nodeType":"YulFunctionCall","src":"11106:17:20"},"nodeType":"YulIf","src":"11103:43:20"},{"nodeType":"YulAssignment","src":"11155:20:20","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11166:5:20"},{"kind":"number","nodeType":"YulLiteral","src":"11173:1:20","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11162:3:20"},"nodeType":"YulFunctionCall","src":"11162:13:20"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"11155:3:20"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11075:5:20","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"11085:3:20","type":""}],"src":"11046:135:20"},{"body":{"nodeType":"YulBlock","src":"11360:182:20","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11377:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"11388:2:20","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11370:6:20"},"nodeType":"YulFunctionCall","src":"11370:21:20"},"nodeType":"YulExpressionStatement","src":"11370:21:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11411:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"11422:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11407:3:20"},"nodeType":"YulFunctionCall","src":"11407:18:20"},{"kind":"number","nodeType":"YulLiteral","src":"11427:2:20","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11400:6:20"},"nodeType":"YulFunctionCall","src":"11400:30:20"},"nodeType":"YulExpressionStatement","src":"11400:30:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11450:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"11461:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11446:3:20"},"nodeType":"YulFunctionCall","src":"11446:18:20"},{"hexValue":"766572696679207369676e6174757265732077656967687420696e76616c6964","kind":"string","nodeType":"YulLiteral","src":"11466:34:20","type":"","value":"verify signatures weight invalid"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11439:6:20"},"nodeType":"YulFunctionCall","src":"11439:62:20"},"nodeType":"YulExpressionStatement","src":"11439:62:20"},{"nodeType":"YulAssignment","src":"11510:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11522:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"11533:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11518:3:20"},"nodeType":"YulFunctionCall","src":"11518:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11510:4:20"}]}]},"name":"abi_encode_tuple_t_stringliteral_88ab1035d0caa060e7ed4577f80acf0519f87cbf4b2c2381493d28b46b3359cb__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11337:9:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11351:4:20","type":""}],"src":"11186:356:20"},{"body":{"nodeType":"YulBlock","src":"11760:295:20","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11777:9:20"},{"name":"value0","nodeType":"YulIdentifier","src":"11788:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11770:6:20"},"nodeType":"YulFunctionCall","src":"11770:25:20"},"nodeType":"YulExpressionStatement","src":"11770:25:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11815:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"11826:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11811:3:20"},"nodeType":"YulFunctionCall","src":"11811:18:20"},{"name":"value1","nodeType":"YulIdentifier","src":"11831:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11804:6:20"},"nodeType":"YulFunctionCall","src":"11804:34:20"},"nodeType":"YulExpressionStatement","src":"11804:34:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11858:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"11869:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11854:3:20"},"nodeType":"YulFunctionCall","src":"11854:18:20"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"11878:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"11886:42:20","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11874:3:20"},"nodeType":"YulFunctionCall","src":"11874:55:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11847:6:20"},"nodeType":"YulFunctionCall","src":"11847:83:20"},"nodeType":"YulExpressionStatement","src":"11847:83:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11950:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"11961:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11946:3:20"},"nodeType":"YulFunctionCall","src":"11946:18:20"},{"kind":"number","nodeType":"YulLiteral","src":"11966:3:20","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11939:6:20"},"nodeType":"YulFunctionCall","src":"11939:31:20"},"nodeType":"YulExpressionStatement","src":"11939:31:20"},{"nodeType":"YulAssignment","src":"11979:70:20","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"12013:6:20"},{"name":"value4","nodeType":"YulIdentifier","src":"12021:6:20"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12033:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"12044:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12029:3:20"},"nodeType":"YulFunctionCall","src":"12029:19:20"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"11987:25:20"},"nodeType":"YulFunctionCall","src":"11987:62:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11979:4:20"}]}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11697:9:20","type":""},{"name":"value4","nodeType":"YulTypedName","src":"11708:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"11716:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"11724:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"11732:6:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11740:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11751:4:20","type":""}],"src":"11547:508:20"},{"body":{"nodeType":"YulBlock","src":"12138:199:20","statements":[{"body":{"nodeType":"YulBlock","src":"12184:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12193:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12196:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12186:6:20"},"nodeType":"YulFunctionCall","src":"12186:12:20"},"nodeType":"YulExpressionStatement","src":"12186:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12159:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"12168:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12155:3:20"},"nodeType":"YulFunctionCall","src":"12155:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"12180:2:20","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12151:3:20"},"nodeType":"YulFunctionCall","src":"12151:32:20"},"nodeType":"YulIf","src":"12148:52:20"},{"nodeType":"YulVariableDeclaration","src":"12209:29:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12228:9:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12222:5:20"},"nodeType":"YulFunctionCall","src":"12222:16:20"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"12213:5:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"12291:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12300:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12303:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12293:6:20"},"nodeType":"YulFunctionCall","src":"12293:12:20"},"nodeType":"YulExpressionStatement","src":"12293:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12260:5:20"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12281:5:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12274:6:20"},"nodeType":"YulFunctionCall","src":"12274:13:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12267:6:20"},"nodeType":"YulFunctionCall","src":"12267:21:20"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12257:2:20"},"nodeType":"YulFunctionCall","src":"12257:32:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12250:6:20"},"nodeType":"YulFunctionCall","src":"12250:40:20"},"nodeType":"YulIf","src":"12247:60:20"},{"nodeType":"YulAssignment","src":"12316:15:20","value":{"name":"value","nodeType":"YulIdentifier","src":"12326:5:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"12316:6:20"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12104:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12115:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12127:6:20","type":""}],"src":"12060:277:20"},{"body":{"nodeType":"YulBlock","src":"12516:161:20","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12533:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"12544:2:20","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12526:6:20"},"nodeType":"YulFunctionCall","src":"12526:21:20"},"nodeType":"YulExpressionStatement","src":"12526:21:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12567:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"12578:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12563:3:20"},"nodeType":"YulFunctionCall","src":"12563:18:20"},{"kind":"number","nodeType":"YulLiteral","src":"12583:2:20","type":"","value":"11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12556:6:20"},"nodeType":"YulFunctionCall","src":"12556:30:20"},"nodeType":"YulExpressionStatement","src":"12556:30:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12606:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"12617:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12602:3:20"},"nodeType":"YulFunctionCall","src":"12602:18:20"},{"hexValue":"43616c6c206661696c6564","kind":"string","nodeType":"YulLiteral","src":"12622:13:20","type":"","value":"Call failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12595:6:20"},"nodeType":"YulFunctionCall","src":"12595:41:20"},"nodeType":"YulExpressionStatement","src":"12595:41:20"},{"nodeType":"YulAssignment","src":"12645:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12657:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"12668:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12653:3:20"},"nodeType":"YulFunctionCall","src":"12653:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12645:4:20"}]}]},"name":"abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12493:9:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12507:4:20","type":""}],"src":"12342:335:20"},{"body":{"nodeType":"YulBlock","src":"12951:413:20","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12968:9:20"},{"name":"value0","nodeType":"YulIdentifier","src":"12979:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12961:6:20"},"nodeType":"YulFunctionCall","src":"12961:25:20"},"nodeType":"YulExpressionStatement","src":"12961:25:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13006:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13017:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13002:3:20"},"nodeType":"YulFunctionCall","src":"13002:18:20"},{"name":"value1","nodeType":"YulIdentifier","src":"13022:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12995:6:20"},"nodeType":"YulFunctionCall","src":"12995:34:20"},"nodeType":"YulExpressionStatement","src":"12995:34:20"},{"nodeType":"YulVariableDeclaration","src":"13038:52:20","value":{"kind":"number","nodeType":"YulLiteral","src":"13048:42:20","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"13042:2:20","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13110:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13121:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13106:3:20"},"nodeType":"YulFunctionCall","src":"13106:18:20"},{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13130:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"13138:2:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13126:3:20"},"nodeType":"YulFunctionCall","src":"13126:15:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13099:6:20"},"nodeType":"YulFunctionCall","src":"13099:43:20"},"nodeType":"YulExpressionStatement","src":"13099:43:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13162:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13173:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13158:3:20"},"nodeType":"YulFunctionCall","src":"13158:18:20"},{"name":"value3","nodeType":"YulIdentifier","src":"13178:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13151:6:20"},"nodeType":"YulFunctionCall","src":"13151:34:20"},"nodeType":"YulExpressionStatement","src":"13151:34:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13205:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13216:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13201:3:20"},"nodeType":"YulFunctionCall","src":"13201:19:20"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"13226:6:20"},{"name":"_1","nodeType":"YulIdentifier","src":"13234:2:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13222:3:20"},"nodeType":"YulFunctionCall","src":"13222:15:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13194:6:20"},"nodeType":"YulFunctionCall","src":"13194:44:20"},"nodeType":"YulExpressionStatement","src":"13194:44:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13258:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13269:3:20","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13254:3:20"},"nodeType":"YulFunctionCall","src":"13254:19:20"},{"kind":"number","nodeType":"YulLiteral","src":"13275:3:20","type":"","value":"192"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13247:6:20"},"nodeType":"YulFunctionCall","src":"13247:32:20"},"nodeType":"YulExpressionStatement","src":"13247:32:20"},{"nodeType":"YulAssignment","src":"13288:70:20","value":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"13322:6:20"},{"name":"value6","nodeType":"YulIdentifier","src":"13330:6:20"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13342:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13353:3:20","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13338:3:20"},"nodeType":"YulFunctionCall","src":"13338:19:20"}],"functionName":{"name":"abi_encode_bytes_calldata","nodeType":"YulIdentifier","src":"13296:25:20"},"nodeType":"YulFunctionCall","src":"13296:62:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13288:4:20"}]}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12872:9:20","type":""},{"name":"value6","nodeType":"YulTypedName","src":"12883:6:20","type":""},{"name":"value5","nodeType":"YulTypedName","src":"12891:6:20","type":""},{"name":"value4","nodeType":"YulTypedName","src":"12899:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12907:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12915:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12923:6:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"12931:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12942:4:20","type":""}],"src":"12682:682:20"},{"body":{"nodeType":"YulBlock","src":"13477:101:20","statements":[{"nodeType":"YulAssignment","src":"13487:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13499:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13510:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13495:3:20"},"nodeType":"YulFunctionCall","src":"13495:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13487:4:20"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13529:9:20"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13544:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"13552:18:20","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13540:3:20"},"nodeType":"YulFunctionCall","src":"13540:31:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13522:6:20"},"nodeType":"YulFunctionCall","src":"13522:50:20"},"nodeType":"YulExpressionStatement","src":"13522:50:20"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13446:9:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13457:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13468:4:20","type":""}],"src":"13369:209:20"},{"body":{"nodeType":"YulBlock","src":"13757:171:20","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13774:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13785:2:20","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13767:6:20"},"nodeType":"YulFunctionCall","src":"13767:21:20"},"nodeType":"YulExpressionStatement","src":"13767:21:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13808:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13819:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13804:3:20"},"nodeType":"YulFunctionCall","src":"13804:18:20"},{"kind":"number","nodeType":"YulLiteral","src":"13824:2:20","type":"","value":"21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13797:6:20"},"nodeType":"YulFunctionCall","src":"13797:30:20"},"nodeType":"YulExpressionStatement","src":"13797:30:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13847:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13858:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13843:3:20"},"nodeType":"YulFunctionCall","src":"13843:18:20"},{"hexValue":"4549503731323a20556e696e697469616c697a6564","kind":"string","nodeType":"YulLiteral","src":"13863:23:20","type":"","value":"EIP712: Uninitialized"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13836:6:20"},"nodeType":"YulFunctionCall","src":"13836:51:20"},"nodeType":"YulExpressionStatement","src":"13836:51:20"},{"nodeType":"YulAssignment","src":"13896:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13908:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"13919:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13904:3:20"},"nodeType":"YulFunctionCall","src":"13904:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13896:4:20"}]}]},"name":"abi_encode_tuple_t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13734:9:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13748:4:20","type":""}],"src":"13583:345:20"},{"body":{"nodeType":"YulBlock","src":"14014:103:20","statements":[{"body":{"nodeType":"YulBlock","src":"14060:16:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14069:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14072:1:20","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14062:6:20"},"nodeType":"YulFunctionCall","src":"14062:12:20"},"nodeType":"YulExpressionStatement","src":"14062:12:20"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14035:7:20"},{"name":"headStart","nodeType":"YulIdentifier","src":"14044:9:20"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14031:3:20"},"nodeType":"YulFunctionCall","src":"14031:23:20"},{"kind":"number","nodeType":"YulLiteral","src":"14056:2:20","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14027:3:20"},"nodeType":"YulFunctionCall","src":"14027:32:20"},"nodeType":"YulIf","src":"14024:52:20"},{"nodeType":"YulAssignment","src":"14085:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14101:9:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14095:5:20"},"nodeType":"YulFunctionCall","src":"14095:16:20"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14085:6:20"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13980:9:20","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"13991:7:20","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14003:6:20","type":""}],"src":"13933:184:20"},{"body":{"nodeType":"YulBlock","src":"14223:125:20","statements":[{"nodeType":"YulAssignment","src":"14233:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14245:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"14256:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14241:3:20"},"nodeType":"YulFunctionCall","src":"14241:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14233:4:20"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14275:9:20"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14290:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"14298:42:20","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14286:3:20"},"nodeType":"YulFunctionCall","src":"14286:55:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14268:6:20"},"nodeType":"YulFunctionCall","src":"14268:74:20"},"nodeType":"YulExpressionStatement","src":"14268:74:20"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14192:9:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14203:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14214:4:20","type":""}],"src":"14122:226:20"},{"body":{"nodeType":"YulBlock","src":"14408:382:20","statements":[{"nodeType":"YulAssignment","src":"14418:22:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14432:1:20","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"14435:4:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"14428:3:20"},"nodeType":"YulFunctionCall","src":"14428:12:20"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"14418:6:20"}]},{"nodeType":"YulVariableDeclaration","src":"14449:38:20","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"14479:4:20"},{"kind":"number","nodeType":"YulLiteral","src":"14485:1:20","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14475:3:20"},"nodeType":"YulFunctionCall","src":"14475:12:20"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"14453:18:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"14526:31:20","statements":[{"nodeType":"YulAssignment","src":"14528:27:20","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14542:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"14550:4:20","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14538:3:20"},"nodeType":"YulFunctionCall","src":"14538:17:20"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"14528:6:20"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"14506:18:20"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"14499:6:20"},"nodeType":"YulFunctionCall","src":"14499:26:20"},"nodeType":"YulIf","src":"14496:61:20"},{"body":{"nodeType":"YulBlock","src":"14616:168:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14637:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14640:77:20","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14630:6:20"},"nodeType":"YulFunctionCall","src":"14630:88:20"},"nodeType":"YulExpressionStatement","src":"14630:88:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14738:1:20","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"14741:4:20","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14731:6:20"},"nodeType":"YulFunctionCall","src":"14731:15:20"},"nodeType":"YulExpressionStatement","src":"14731:15:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14766:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14769:4:20","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14759:6:20"},"nodeType":"YulFunctionCall","src":"14759:15:20"},"nodeType":"YulExpressionStatement","src":"14759:15:20"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"14572:18:20"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"14595:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"14603:2:20","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"14592:2:20"},"nodeType":"YulFunctionCall","src":"14592:14:20"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"14569:2:20"},"nodeType":"YulFunctionCall","src":"14569:38:20"},"nodeType":"YulIf","src":"14566:218:20"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"14388:4:20","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"14397:6:20","type":""}],"src":"14353:437:20"},{"body":{"nodeType":"YulBlock","src":"14924:168:20","statements":[{"nodeType":"YulAssignment","src":"14934:26:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14946:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"14957:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14942:3:20"},"nodeType":"YulFunctionCall","src":"14942:18:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14934:4:20"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14976:9:20"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14991:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"14999:42:20","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"14987:3:20"},"nodeType":"YulFunctionCall","src":"14987:55:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14969:6:20"},"nodeType":"YulFunctionCall","src":"14969:74:20"},"nodeType":"YulExpressionStatement","src":"14969:74:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15063:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"15074:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15059:3:20"},"nodeType":"YulFunctionCall","src":"15059:18:20"},{"name":"value1","nodeType":"YulIdentifier","src":"15079:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15052:6:20"},"nodeType":"YulFunctionCall","src":"15052:34:20"},"nodeType":"YulExpressionStatement","src":"15052:34:20"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14885:9:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14896:6:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"14904:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14915:4:20","type":""}],"src":"14795:297:20"},{"body":{"nodeType":"YulBlock","src":"15153:65:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15170:1:20","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"15173:3:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15163:6:20"},"nodeType":"YulFunctionCall","src":"15163:14:20"},"nodeType":"YulExpressionStatement","src":"15163:14:20"},{"nodeType":"YulAssignment","src":"15186:26:20","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15204:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15207:4:20","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"15194:9:20"},"nodeType":"YulFunctionCall","src":"15194:18:20"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"15186:4:20"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"15136:3:20","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"15144:4:20","type":""}],"src":"15097:121:20"},{"body":{"nodeType":"YulBlock","src":"15304:464:20","statements":[{"body":{"nodeType":"YulBlock","src":"15337:425:20","statements":[{"nodeType":"YulVariableDeclaration","src":"15351:11:20","value":{"kind":"number","nodeType":"YulLiteral","src":"15361:1:20","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"15355:2:20","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"15382:2:20"},{"name":"array","nodeType":"YulIdentifier","src":"15386:5:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15375:6:20"},"nodeType":"YulFunctionCall","src":"15375:17:20"},"nodeType":"YulExpressionStatement","src":"15375:17:20"},{"nodeType":"YulVariableDeclaration","src":"15405:31:20","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"15427:2:20"},{"kind":"number","nodeType":"YulLiteral","src":"15431:4:20","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"15417:9:20"},"nodeType":"YulFunctionCall","src":"15417:19:20"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"15409:4:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15449:57:20","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15472:4:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15482:1:20","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"15489:10:20"},{"kind":"number","nodeType":"YulLiteral","src":"15501:2:20","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15485:3:20"},"nodeType":"YulFunctionCall","src":"15485:19:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"15478:3:20"},"nodeType":"YulFunctionCall","src":"15478:27:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15468:3:20"},"nodeType":"YulFunctionCall","src":"15468:38:20"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"15453:11:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"15543:23:20","statements":[{"nodeType":"YulAssignment","src":"15545:19:20","value":{"name":"data","nodeType":"YulIdentifier","src":"15560:4:20"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"15545:11:20"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"15525:10:20"},{"kind":"number","nodeType":"YulLiteral","src":"15537:4:20","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15522:2:20"},"nodeType":"YulFunctionCall","src":"15522:20:20"},"nodeType":"YulIf","src":"15519:47:20"},{"nodeType":"YulVariableDeclaration","src":"15579:41:20","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15593:4:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15603:1:20","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"15610:3:20"},{"kind":"number","nodeType":"YulLiteral","src":"15615:2:20","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15606:3:20"},"nodeType":"YulFunctionCall","src":"15606:12:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"15599:3:20"},"nodeType":"YulFunctionCall","src":"15599:20:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15589:3:20"},"nodeType":"YulFunctionCall","src":"15589:31:20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"15583:2:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"15633:24:20","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"15646:11:20"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"15637:5:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"15731:21:20","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"15740:5:20"},{"name":"_1","nodeType":"YulIdentifier","src":"15747:2:20"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"15733:6:20"},"nodeType":"YulFunctionCall","src":"15733:17:20"},"nodeType":"YulExpressionStatement","src":"15733:17:20"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"15681:5:20"},{"name":"_2","nodeType":"YulIdentifier","src":"15688:2:20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15678:2:20"},"nodeType":"YulFunctionCall","src":"15678:13:20"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15692:26:20","statements":[{"nodeType":"YulAssignment","src":"15694:22:20","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"15707:5:20"},{"kind":"number","nodeType":"YulLiteral","src":"15714:1:20","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15703:3:20"},"nodeType":"YulFunctionCall","src":"15703:13:20"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"15694:5:20"}]}]},"pre":{"nodeType":"YulBlock","src":"15674:3:20","statements":[]},"src":"15670:82:20"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"15320:3:20"},{"kind":"number","nodeType":"YulLiteral","src":"15325:2:20","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15317:2:20"},"nodeType":"YulFunctionCall","src":"15317:11:20"},"nodeType":"YulIf","src":"15314:448:20"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"15276:5:20","type":""},{"name":"len","nodeType":"YulTypedName","src":"15283:3:20","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"15288:10:20","type":""}],"src":"15223:545:20"},{"body":{"nodeType":"YulBlock","src":"15858:81:20","statements":[{"nodeType":"YulAssignment","src":"15868:65:20","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"15883:4:20"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15901:1:20","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"15904:3:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15897:3:20"},"nodeType":"YulFunctionCall","src":"15897:11:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15914:1:20","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15910:3:20"},"nodeType":"YulFunctionCall","src":"15910:6:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"15893:3:20"},"nodeType":"YulFunctionCall","src":"15893:24:20"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"15889:3:20"},"nodeType":"YulFunctionCall","src":"15889:29:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"15879:3:20"},"nodeType":"YulFunctionCall","src":"15879:40:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15925:1:20","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"15928:3:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"15921:3:20"},"nodeType":"YulFunctionCall","src":"15921:11:20"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"15876:2:20"},"nodeType":"YulFunctionCall","src":"15876:57:20"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"15868:4:20"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"15835:4:20","type":""},{"name":"len","nodeType":"YulTypedName","src":"15841:3:20","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"15849:4:20","type":""}],"src":"15773:166:20"},{"body":{"nodeType":"YulBlock","src":"16040:1256:20","statements":[{"nodeType":"YulVariableDeclaration","src":"16050:24:20","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16070:3:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16064:5:20"},"nodeType":"YulFunctionCall","src":"16064:10:20"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"16054:6:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"16117:22:20","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"16119:16:20"},"nodeType":"YulFunctionCall","src":"16119:18:20"},"nodeType":"YulExpressionStatement","src":"16119:18:20"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16089:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"16097:18:20","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16086:2:20"},"nodeType":"YulFunctionCall","src":"16086:30:20"},"nodeType":"YulIf","src":"16083:56:20"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16192:4:20"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16230:4:20"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"16224:5:20"},"nodeType":"YulFunctionCall","src":"16224:11:20"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"16198:25:20"},"nodeType":"YulFunctionCall","src":"16198:38:20"},{"name":"newLen","nodeType":"YulIdentifier","src":"16238:6:20"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"16148:43:20"},"nodeType":"YulFunctionCall","src":"16148:97:20"},"nodeType":"YulExpressionStatement","src":"16148:97:20"},{"nodeType":"YulVariableDeclaration","src":"16254:18:20","value":{"kind":"number","nodeType":"YulLiteral","src":"16271:1:20","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"16258:9:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16281:23:20","value":{"kind":"number","nodeType":"YulLiteral","src":"16300:4:20","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"16285:11:20","type":""}]},{"nodeType":"YulAssignment","src":"16313:24:20","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"16326:11:20"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16313:9:20"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"16383:656:20","statements":[{"nodeType":"YulVariableDeclaration","src":"16397:35:20","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16416:6:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16428:2:20","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"16424:3:20"},"nodeType":"YulFunctionCall","src":"16424:7:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16412:3:20"},"nodeType":"YulFunctionCall","src":"16412:20:20"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"16401:7:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16445:49:20","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"16489:4:20"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"16459:29:20"},"nodeType":"YulFunctionCall","src":"16459:35:20"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"16449:6:20","type":""}]},{"nodeType":"YulVariableDeclaration","src":"16507:10:20","value":{"kind":"number","nodeType":"YulLiteral","src":"16516:1:20","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"16511:1:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"16594:172:20","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16619:6:20"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16637:3:20"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16642:9:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16633:3:20"},"nodeType":"YulFunctionCall","src":"16633:19:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16627:5:20"},"nodeType":"YulFunctionCall","src":"16627:26:20"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16612:6:20"},"nodeType":"YulFunctionCall","src":"16612:42:20"},"nodeType":"YulExpressionStatement","src":"16612:42:20"},{"nodeType":"YulAssignment","src":"16671:24:20","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16685:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"16693:1:20","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16681:3:20"},"nodeType":"YulFunctionCall","src":"16681:14:20"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16671:6:20"}]},{"nodeType":"YulAssignment","src":"16712:40:20","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16729:9:20"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"16740:11:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16725:3:20"},"nodeType":"YulFunctionCall","src":"16725:27:20"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"16712:9:20"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16541:1:20"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"16544:7:20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16538:2:20"},"nodeType":"YulFunctionCall","src":"16538:14:20"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"16553:28:20","statements":[{"nodeType":"YulAssignment","src":"16555:24:20","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"16564:1:20"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"16567:11:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16560:3:20"},"nodeType":"YulFunctionCall","src":"16560:19:20"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"16555:1:20"}]}]},"pre":{"nodeType":"YulBlock","src":"16534:3:20","statements":[]},"src":"16530:236:20"},{"body":{"nodeType":"YulBlock","src":"16814:166:20","statements":[{"nodeType":"YulVariableDeclaration","src":"16832:43:20","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"16859:3:20"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"16864:9:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16855:3:20"},"nodeType":"YulFunctionCall","src":"16855:19:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"16849:5:20"},"nodeType":"YulFunctionCall","src":"16849:26:20"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"16836:9:20","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"16899:6:20"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"16911:9:20"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16938:1:20","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"16941:6:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"16934:3:20"},"nodeType":"YulFunctionCall","src":"16934:14:20"},{"kind":"number","nodeType":"YulLiteral","src":"16950:3:20","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16930:3:20"},"nodeType":"YulFunctionCall","src":"16930:24:20"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16960:1:20","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"16956:3:20"},"nodeType":"YulFunctionCall","src":"16956:6:20"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"16926:3:20"},"nodeType":"YulFunctionCall","src":"16926:37:20"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"16922:3:20"},"nodeType":"YulFunctionCall","src":"16922:42:20"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"16907:3:20"},"nodeType":"YulFunctionCall","src":"16907:58:20"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16892:6:20"},"nodeType":"YulFunctionCall","src":"16892:74:20"},"nodeType":"YulExpressionStatement","src":"16892:74:20"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"16785:7:20"},{"name":"newLen","nodeType":"YulIdentifier","src":"16794:6:20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"16782:2:20"},"nodeType":"YulFunctionCall","src":"16782:19:20"},"nodeType":"YulIf","src":"16779:201:20"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"17000:4:20"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17014:1:20","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"17017:6:20"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"17010:3:20"},"nodeType":"YulFunctionCall","src":"17010:14:20"},{"kind":"number","nodeType":"YulLiteral","src":"17026:1:20","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17006:3:20"},"nodeType":"YulFunctionCall","src":"17006:22:20"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"16993:6:20"},"nodeType":"YulFunctionCall","src":"16993:36:20"},"nodeType":"YulExpressionStatement","src":"16993:36:20"}]},"nodeType":"YulCase","src":"16376:663:20","value":{"kind":"number","nodeType":"YulLiteral","src":"16381:1:20","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"17056:234:20","statements":[{"nodeType":"YulVariableDeclaration","src":"17070:14:20","value":{"kind":"number","nodeType":"YulLiteral","src":"17083:1:20","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"17074:5:20","type":""}]},{"body":{"nodeType":"YulBlock","src":"17119:67:20","statements":[{"nodeType":"YulAssignment","src":"17137:35:20","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"17156:3:20"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"17161:9:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17152:3:20"},"nodeType":"YulFunctionCall","src":"17152:19:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17146:5:20"},"nodeType":"YulFunctionCall","src":"17146:26:20"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17137:5:20"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"17100:6:20"},"nodeType":"YulIf","src":"17097:89:20"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"17206:4:20"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17265:5:20"},{"name":"newLen","nodeType":"YulIdentifier","src":"17272:6:20"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"17212:52:20"},"nodeType":"YulFunctionCall","src":"17212:67:20"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"17199:6:20"},"nodeType":"YulFunctionCall","src":"17199:81:20"},"nodeType":"YulExpressionStatement","src":"17199:81:20"}]},"nodeType":"YulCase","src":"17048:242:20","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"16356:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"16364:2:20","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16353:2:20"},"nodeType":"YulFunctionCall","src":"16353:14:20"},"nodeType":"YulSwitch","src":"16346:944:20"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"16025:4:20","type":""},{"name":"src","nodeType":"YulTypedName","src":"16031:3:20","type":""}],"src":"15944:1352:20"},{"body":{"nodeType":"YulBlock","src":"17333:152:20","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17350:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17353:77:20","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17343:6:20"},"nodeType":"YulFunctionCall","src":"17343:88:20"},"nodeType":"YulExpressionStatement","src":"17343:88:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17447:1:20","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"17450:4:20","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17440:6:20"},"nodeType":"YulFunctionCall","src":"17440:15:20"},"nodeType":"YulExpressionStatement","src":"17440:15:20"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17471:1:20","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17474:4:20","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17464:6:20"},"nodeType":"YulFunctionCall","src":"17464:15:20"},"nodeType":"YulExpressionStatement","src":"17464:15:20"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"17301:184:20"},{"body":{"nodeType":"YulBlock","src":"17703:299:20","statements":[{"nodeType":"YulAssignment","src":"17713:27:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17725:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"17736:3:20","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17721:3:20"},"nodeType":"YulFunctionCall","src":"17721:19:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17713:4:20"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17756:9:20"},{"name":"value0","nodeType":"YulIdentifier","src":"17767:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17749:6:20"},"nodeType":"YulFunctionCall","src":"17749:25:20"},"nodeType":"YulExpressionStatement","src":"17749:25:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17794:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"17805:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17790:3:20"},"nodeType":"YulFunctionCall","src":"17790:18:20"},{"name":"value1","nodeType":"YulIdentifier","src":"17810:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17783:6:20"},"nodeType":"YulFunctionCall","src":"17783:34:20"},"nodeType":"YulExpressionStatement","src":"17783:34:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17837:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"17848:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17833:3:20"},"nodeType":"YulFunctionCall","src":"17833:18:20"},{"name":"value2","nodeType":"YulIdentifier","src":"17853:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17826:6:20"},"nodeType":"YulFunctionCall","src":"17826:34:20"},"nodeType":"YulExpressionStatement","src":"17826:34:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17880:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"17891:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17876:3:20"},"nodeType":"YulFunctionCall","src":"17876:18:20"},{"name":"value3","nodeType":"YulIdentifier","src":"17896:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17869:6:20"},"nodeType":"YulFunctionCall","src":"17869:34:20"},"nodeType":"YulExpressionStatement","src":"17869:34:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17923:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"17934:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17919:3:20"},"nodeType":"YulFunctionCall","src":"17919:19:20"},{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"17944:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"17952:42:20","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17940:3:20"},"nodeType":"YulFunctionCall","src":"17940:55:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17912:6:20"},"nodeType":"YulFunctionCall","src":"17912:84:20"},"nodeType":"YulExpressionStatement","src":"17912:84:20"}]},"name":"abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17640:9:20","type":""},{"name":"value4","nodeType":"YulTypedName","src":"17651:6:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"17659:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"17667:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17675:6:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17683:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17694:4:20","type":""}],"src":"17490:512:20"},{"body":{"nodeType":"YulBlock","src":"18144:150:20","statements":[{"nodeType":"YulVariableDeclaration","src":"18154:27:20","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18174:6:20"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18168:5:20"},"nodeType":"YulFunctionCall","src":"18168:13:20"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"18158:6:20","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18229:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"18237:4:20","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18225:3:20"},"nodeType":"YulFunctionCall","src":"18225:17:20"},{"name":"pos","nodeType":"YulIdentifier","src":"18244:3:20"},{"name":"length","nodeType":"YulIdentifier","src":"18249:6:20"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"18190:34:20"},"nodeType":"YulFunctionCall","src":"18190:66:20"},"nodeType":"YulExpressionStatement","src":"18190:66:20"},{"nodeType":"YulAssignment","src":"18265:23:20","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18276:3:20"},{"name":"length","nodeType":"YulIdentifier","src":"18281:6:20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18272:3:20"},"nodeType":"YulFunctionCall","src":"18272:16:20"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18265:3:20"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18120:3:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18125:6:20","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18136:3:20","type":""}],"src":"18007:287:20"},{"body":{"nodeType":"YulBlock","src":"18480:217:20","statements":[{"nodeType":"YulAssignment","src":"18490:27:20","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18502:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"18513:3:20","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18498:3:20"},"nodeType":"YulFunctionCall","src":"18498:19:20"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18490:4:20"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18533:9:20"},{"name":"value0","nodeType":"YulIdentifier","src":"18544:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18526:6:20"},"nodeType":"YulFunctionCall","src":"18526:25:20"},"nodeType":"YulExpressionStatement","src":"18526:25:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18571:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"18582:2:20","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18567:3:20"},"nodeType":"YulFunctionCall","src":"18567:18:20"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"18591:6:20"},{"kind":"number","nodeType":"YulLiteral","src":"18599:4:20","type":"","value":"0xff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"18587:3:20"},"nodeType":"YulFunctionCall","src":"18587:17:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18560:6:20"},"nodeType":"YulFunctionCall","src":"18560:45:20"},"nodeType":"YulExpressionStatement","src":"18560:45:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18625:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"18636:2:20","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18621:3:20"},"nodeType":"YulFunctionCall","src":"18621:18:20"},{"name":"value2","nodeType":"YulIdentifier","src":"18641:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18614:6:20"},"nodeType":"YulFunctionCall","src":"18614:34:20"},"nodeType":"YulExpressionStatement","src":"18614:34:20"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18668:9:20"},{"kind":"number","nodeType":"YulLiteral","src":"18679:2:20","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18664:3:20"},"nodeType":"YulFunctionCall","src":"18664:18:20"},{"name":"value3","nodeType":"YulIdentifier","src":"18684:6:20"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18657:6:20"},"nodeType":"YulFunctionCall","src":"18657:34:20"},"nodeType":"YulExpressionStatement","src":"18657:34:20"}]},"name":"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18425:9:20","type":""},{"name":"value3","nodeType":"YulTypedName","src":"18436:6:20","type":""},{"name":"value2","nodeType":"YulTypedName","src":"18444:6:20","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18452:6:20","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18460:6:20","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18471:4:20","type":""}],"src":"18299:398:20"}]},"contents":"{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n }\n function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := abi_decode_address(add(headStart, 128))\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value5 := value5_1\n value6 := value6_1\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_uint256t_addresst_addresst_bytes_calldata_ptrt_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n value3 := abi_decode_address(add(headStart, 96))\n let offset := calldataload(add(headStart, 128))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value4_1, value5_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value4 := value4_1\n value5 := value5_1\n let offset_1 := calldataload(add(headStart, 160))\n if gt(offset_1, _1) { revert(0, 0) }\n let _2 := add(headStart, offset_1)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let length := calldataload(_2)\n if gt(length, _1) { revert(0, 0) }\n if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n value6 := add(_2, 32)\n value7 := length\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value1 := memPtr\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value2 := value2_1\n value3 := value3_1\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, 0xff00000000000000000000000000000000000000000000000000000000000000))\n let _1 := 32\n mstore(add(headStart, _1), 224)\n let tail_1 := abi_encode_string(value1, add(headStart, 224))\n mstore(add(headStart, 64), sub(tail_1, headStart))\n let tail_2 := abi_encode_string(value2, tail_1)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), sub(tail_2, headStart))\n let pos := tail_2\n let length := mload(value6)\n mstore(tail_2, length)\n pos := add(tail_2, _1)\n let srcPtr := add(value6, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n value4 := abi_decode_address(add(headStart, 128))\n let offset := calldataload(add(headStart, 160))\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value5_1, value6_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n value5 := value5_1\n value6 := value6_1\n let offset_1 := calldataload(add(headStart, 192))\n if gt(offset_1, _1) { revert(0, 0) }\n let value7_1, value8_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n value7 := value7_1\n value8 := value8_1\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_bytes_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_calldata_ptr__to_t_bytes32_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), and(value5, _1))\n mstore(add(headStart, 192), 224)\n tail := abi_encode_bytes_calldata(value6, value7, add(headStart, 224))\n }\n function panic_error_0x32()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n {\n let rel_offset_of_tail := calldataload(ptr_to_tail)\n if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n let addr_1 := add(base_ref, rel_offset_of_tail)\n length := calldataload(addr_1)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n addr := add(addr_1, 0x20)\n if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n }\n function panic_error_0x11()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_stringliteral_88ab1035d0caa060e7ed4577f80acf0519f87cbf4b2c2381493d28b46b3359cb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 32)\n mstore(add(headStart, 64), \"verify signatures weight invalid\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 96), 128)\n tail := abi_encode_bytes_calldata(value3, value4, add(headStart, 128))\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 11)\n mstore(add(headStart, 64), \"Call failed\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_calldata_ptr__to_t_uint256_t_uint256_t_address_t_uint256_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, _1))\n mstore(add(headStart, 160), 192)\n tail := abi_encode_bytes_calldata(value5, value6, add(headStart, 192))\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffff))\n }\n function abi_encode_tuple_t_stringliteral_2e5045ff73280aa8e8acd8c82710f23812497f87f7f576e2220a2ddd0d45eade__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 21)\n mstore(add(headStart, 64), \"EIP712: Uninitialized\")\n tail := add(headStart, 96)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n mstore(add(headStart, 32), value1)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(_1, array)\n let data := keccak256(_1, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := srcOffset_1\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function panic_error_0x21()\n {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n}","id":20,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"636":[{"length":32,"start":3999},{"length":32,"start":4040},{"length":32,"start":4458}]},"linkReferences":{},"object":"6080604052600436106101805760003560e01c80638129fc1c116100d6578063b908afa81161007f578063cc8f426111610059578063cc8f4261146104d6578063d547741f1461050a578063fc1711f21461052a57600080fd5b8063b908afa81461044e578063bc5c11aa14610482578063c49baebe146104a257600080fd5b8063a1aab33f116100b0578063a1aab33f146103cd578063a217fddf146103e3578063ad3cb1cc146103f857600080fd5b80638129fc1c1461032b57806384b0196e1461034057806391d148541461036857600080fd5b806336568abe1161013857806352d1902d1161011257806352d1902d146102c25780636ba3300c146102d757806375b238fc146102f757600080fd5b806336568abe146102795780634f1ef28614610299578063529d15cc146102ac57600080fd5b80630d682acb116101695780630d682acb146101e8578063248a9ca31461020a5780632f2ff15d1461025957600080fd5b806301ffc9a71461018557806304760f2e146101ba575b600080fd5b34801561019157600080fd5b506101a56101a0366004611a3b565b61054a565b60405190151581526020015b60405180910390f35b3480156101c657600080fd5b506101da6101d5366004611ae2565b6105e3565b6040519081526020016101b1565b3480156101f457600080fd5b50610208610203366004611b64565b61064e565b005b34801561021657600080fd5b506101da610225366004611c38565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b34801561026557600080fd5b50610208610274366004611c51565b61084c565b34801561028557600080fd5b50610208610294366004611c51565b610896565b6102086102a7366004611c93565b6108e7565b3480156102b857600080fd5b506101da60005481565b3480156102ce57600080fd5b506101da610906565b3480156102e357600080fd5b506101da6102f2366004611d55565b610935565b34801561030357600080fd5b506101da7f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde81565b34801561033757600080fd5b50610208610998565b34801561034c57600080fd5b50610355610bb5565b6040516101b19796959493929190611dff565b34801561037457600080fd5b506101a5610383366004611c51565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156103d957600080fd5b506101da60015481565b3480156103ef57600080fd5b506101da600081565b34801561040457600080fd5b506104416040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101b19190611eb1565b34801561045a57600080fd5b506101da7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f981565b34801561048e57600080fd5b506101a561049d366004611ec4565b610c97565b3480156104ae57600080fd5b506101da7f5635ac0328a174458ffe72e6c6023489a57ff03280729989530f567288831c9181565b3480156104e257600080fd5b506101da7f17a4f53d2ecdb8066d7886a0e506b8014ce17a9a263db690785538a077e52b0981565b34801561051657600080fd5b50610208610525366004611c51565b610d20565b34801561053657600080fd5b50610208610545366004611c38565b610d64565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806105dd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006106427f17a4f53d2ecdb8066d7886a0e506b8014ce17a9a263db690785538a077e52b0989898989898989604051602001610627989796959493929190611f9d565b60405160208183030381529060405280519060200120610dca565b98975050505050505050565b6000805b828110156106b357600061068a8a8c8b468c8c8c8c8c8b81811061067857610678611ff0565b905060200281019061049d9190612006565b905080156106a05761069d836001612063565b92505b50806106ab81612076565b915050610652565b5060015481101561070b5760405162461bcd60e51b815260206004820181905260248201527f766572696679207369676e6174757265732077656967687420696e76616c696460448201526064015b60405180910390fd5b6001600160a01b038616156107fe576040517fe09ee8700000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063e09ee8709061076a908d908d908d908c908c9060040161208f565b6020604051808303816000875af1158015610789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ad91906120c9565b9050806107fc5760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610702565b505b7f5849ae3f4bc77f0ebd2d6db4ff282f91f2191d3df4493e63176c2ed22fb81852898989468a8a8a60405161083997969594939291906120eb565b60405180910390a1505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461088681610e12565b6108908383610e1f565b50505050565b6001600160a01b03811633146108d8576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108e28282610eee565b505050565b6108ef610f94565b6108f88261104d565b6109028282611077565b5050565b600061091061115f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60008054610944906001612063565b60008190556040517f599c34a8d0b3638870afcfe3d7d8125602721889a7535cda986ea656e63fc38c916109849146919033908a908a908a908a906120eb565b60405180910390a150600054949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156109e35750825b905060008267ffffffffffffffff166001148015610a005750303b155b905081158015610a0e575080155b15610a45576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a7957845468ff00000000000000001916680100000000000000001785555b610aed6040518060400160405280600f81526020017f42324d65737361676542726964676500000000000000000000000000000000008152506040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506111a8565b610af56111ba565b610afd6111ba565b610b08600033610e1f565b50610b337f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde33610e1f565b50610b5e7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f933610e1f565b50600080558315610bae57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008054909150158015610bf457506001810154155b610c405760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610702565b610c486111c2565b610c50611297565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b600080610ca98b8b8b8b8b8b8b6105e3565b9050610d117f5635ac0328a174458ffe72e6c6023489a57ff03280729989530f567288831c9161038386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087939250506112e89050565b9b9a5050505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610d5a81610e12565b6108908383610eee565b7f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde610d8e81610e12565b60018290556040518281527f1b29ec9f95417d697093ba2f17ce0861fb5bcbb7d5011cdde1020c9263ecc1169060200160405180910390a15050565b60006105dd610dd7611312565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b610e1c8133611321565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16610ee4576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610e9a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506105dd565b60009150506105dd565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615610ee4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506105dd565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061102d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110217f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b1561104b5760405163703e46dd60e11b815260040160405180910390fd5b565b7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f961090281610e12565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156110d1575060408051601f3d908101601f191682019092526110ce91810190612137565b60015b6110f957604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610702565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114611155576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610702565b6108e283836113ae565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461104b5760405163703e46dd60e11b815260040160405180910390fd5b6111b0611404565b610902828261146b565b61104b611404565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1009161121390612150565b80601f016020809104026020016040519081016040528092919081815260200182805461123f90612150565b801561128c5780601f106112615761010080835404028352916020019161128c565b820191906000526020600020905b81548152906001019060200180831161126f57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1009161121390612150565b6000806000806112f886866114de565b925092509250611308828261152b565b5090949350505050565b600061131c61162f565b905090565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610902576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610702565b6113b7826116a3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156113fc576108e28282611732565b6109026117a8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661104b576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611473611404565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026114bf84826121d8565b50600381016114ce83826121d8565b5060008082556001909101555050565b600080600083516041036115185760208401516040850151606086015160001a61150a888285856117e0565b955095509550505050611524565b50508151600091506002905b9250925092565b600082600381111561153f5761153f612298565b03611548575050565b600182600381111561155c5761155c612298565b03611593576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028260038111156115a7576115a7612298565b036115e1576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610702565b60038260038111156115f5576115f5612298565b03610902576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610702565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61165a6118af565b61166261192b565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b806001600160a01b03163b6000036116d957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610702565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161174f91906122ae565b600060405180830381855af49150503d806000811461178a576040519150601f19603f3d011682016040523d82523d6000602084013e61178f565b606091505b509150915061179f858383611981565b95945050505050565b341561104b576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561181b57506000915060039050826118a5565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561186f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661189b575060009250600191508290506118a5565b9250600091508190505b9450945094915050565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100816118db6111c2565b8051909150156118f357805160209091012092915050565b81548015611902579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10081611957611297565b80519091501561196f57805160209091012092915050565b60018201548015611902579392505050565b60608261199657611991826119f9565b6119f2565b81511580156119ad57506001600160a01b0384163b155b156119ef576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610702565b50805b9392505050565b805115611a095780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215611a4d57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119f257600080fd5b80356001600160a01b0381168114611a9457600080fd5b919050565b60008083601f840112611aab57600080fd5b50813567ffffffffffffffff811115611ac357600080fd5b602083019150836020828501011115611adb57600080fd5b9250929050565b600080600080600080600060c0888a031215611afd57600080fd5b8735965060208801359550611b1460408901611a7d565b945060608801359350611b2960808901611a7d565b925060a088013567ffffffffffffffff811115611b4557600080fd5b611b518a828b01611a99565b989b979a50959850939692959293505050565b60008060008060008060008060c0898b031215611b8057600080fd5b8835975060208901359650611b9760408a01611a7d565b9550611ba560608a01611a7d565b9450608089013567ffffffffffffffff80821115611bc257600080fd5b611bce8c838d01611a99565b909650945060a08b0135915080821115611be757600080fd5b818b0191508b601f830112611bfb57600080fd5b813581811115611c0a57600080fd5b8c60208260051b8501011115611c1f57600080fd5b6020830194508093505050509295985092959890939650565b600060208284031215611c4a57600080fd5b5035919050565b60008060408385031215611c6457600080fd5b82359150611c7460208401611a7d565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215611ca657600080fd5b611caf83611a7d565b9150602083013567ffffffffffffffff80821115611ccc57600080fd5b818501915085601f830112611ce057600080fd5b813581811115611cf257611cf2611c7d565b604051601f8201601f19908116603f01168101908382118183101715611d1a57611d1a611c7d565b81604052828152886020848701011115611d3357600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060008060608587031215611d6b57600080fd5b84359350611d7b60208601611a7d565b9250604085013567ffffffffffffffff811115611d9757600080fd5b611da387828801611a99565b95989497509550505050565b60005b83811015611dca578181015183820152602001611db2565b50506000910152565b60008151808452611deb816020860160208601611daf565b601f01601f19169290920160200192915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152611e3b60e084018a611dd3565b8381036040850152611e4d818a611dd3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015611e9f57835183529284019291840191600101611e83565b50909c9b505050505050505050505050565b6020815260006119f26020830184611dd3565b600080600080600080600080600060e08a8c031215611ee257600080fd5b8935985060208a01359750611ef960408b01611a7d565b965060608a01359550611f0e60808b01611a7d565b945060a08a013567ffffffffffffffff80821115611f2b57600080fd5b611f378d838e01611a99565b909650945060c08c0135915080821115611f5057600080fd5b50611f5d8c828d01611a99565b915080935050809150509295985092959850929598565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b88815287602082015286604082015260006001600160a01b03808816606084015286608084015280861660a08401525060e060c0830152611fe260e083018486611f74565b9a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261201d57600080fd5b83018035915067ffffffffffffffff82111561203857600080fd5b602001915036819003821315611adb57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156105dd576105dd61204d565b6000600182016120885761208861204d565b5060010190565b8581528460208201526001600160a01b03841660408201526080606082015260006120be608083018486611f74565b979650505050505050565b6000602082840312156120db57600080fd5b815180151581146119f257600080fd5b87815286602082015260006001600160a01b03808816604084015286606084015280861660808401525060c060a083015261212a60c083018486611f74565b9998505050505050505050565b60006020828403121561214957600080fd5b5051919050565b600181811c9082168061216457607f821691505b60208210810361218457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156108e257600081815260208120601f850160051c810160208610156121b15750805b601f850160051c820191505b818110156121d0578281556001016121bd565b505050505050565b815167ffffffffffffffff8111156121f2576121f2611c7d565b612206816122008454612150565b8461218a565b602080601f83116001811461223b57600084156122235750858301515b600019600386901b1c1916600185901b1785556121d0565b600085815260208120601f198616915b8281101561226a5788860151825594840194600190910190840161224b565b50858210156122885787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b600082516122c0818460208701611daf565b919091019291505056fea264697066735822122044aa55334082267f97d7f7928dd15ba98b2f1001512de00b94b1bc93cb86ab6564736f6c63430008140033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x180 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8129FC1C GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xB908AFA8 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xCC8F4261 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCC8F4261 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0xFC1711F2 EQ PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB908AFA8 EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0xBC5C11AA EQ PUSH2 0x482 JUMPI DUP1 PUSH4 0xC49BAEBE EQ PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA1AAB33F GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xA1AAB33F EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x52D1902D GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x2C2 JUMPI DUP1 PUSH4 0x6BA3300C EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x75B238FC EQ PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x36568ABE EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x299 JUMPI DUP1 PUSH4 0x529D15CC EQ PUSH2 0x2AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD682ACB GT PUSH2 0x169 JUMPI DUP1 PUSH4 0xD682ACB EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x4760F2E EQ PUSH2 0x1BA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x1A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A3B JUMP JUMPDEST PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x1D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AE2 JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B64 JUMP JUMPDEST PUSH2 0x64E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x225 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C38 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C51 JUMP JUMPDEST PUSH2 0x84C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x294 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C51 JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C93 JUMP JUMPDEST PUSH2 0x8E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x906 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x2F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D55 JUMP JUMPDEST PUSH2 0x935 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x998 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x355 PUSH2 0xBB5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B1 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1DFF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x383 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C51 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x441 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x352E302E30000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x1EB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH2 0x49D CALLDATASIZE PUSH1 0x4 PUSH2 0x1EC4 JUMP JUMPDEST PUSH2 0xC97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH32 0x5635AC0328A174458FFE72E6C6023489A57FF03280729989530F567288831C91 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH32 0x17A4F53D2ECDB8066D7886A0E506B8014CE17A9A263DB690785538A077E52B09 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x525 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C51 JUMP JUMPDEST PUSH2 0xD20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x545 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C38 JUMP JUMPDEST PUSH2 0xD64 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x5DD JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x642 PUSH32 0x17A4F53D2ECDB8066D7886A0E506B8014CE17A9A263DB690785538A077E52B09 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x627 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1F9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xDCA JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x6B3 JUMPI PUSH1 0x0 PUSH2 0x68A DUP11 DUP13 DUP12 CHAINID DUP13 DUP13 DUP13 DUP13 DUP13 DUP12 DUP2 DUP2 LT PUSH2 0x678 JUMPI PUSH2 0x678 PUSH2 0x1FF0 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x49D SWAP2 SWAP1 PUSH2 0x2006 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x6A0 JUMPI PUSH2 0x69D DUP4 PUSH1 0x1 PUSH2 0x2063 JUMP JUMPDEST SWAP3 POP JUMPDEST POP DUP1 PUSH2 0x6AB DUP2 PUSH2 0x2076 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x652 JUMP JUMPDEST POP PUSH1 0x1 SLOAD DUP2 LT ISZERO PUSH2 0x70B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x766572696679207369676E6174757265732077656967687420696E76616C6964 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO PUSH2 0x7FE JUMPI PUSH1 0x40 MLOAD PUSH32 0xE09EE87000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xE09EE870 SWAP1 PUSH2 0x76A SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x208F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x789 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7AD SWAP2 SWAP1 PUSH2 0x20C9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x7FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616C6C206661696C6564000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x702 JUMP JUMPDEST POP JUMPDEST PUSH32 0x5849AE3F4BC77F0EBD2D6DB4FF282F91F2191D3DF4493E63176C2ED22FB81852 DUP10 DUP10 DUP10 CHAINID DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x839 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x886 DUP2 PUSH2 0xE12 JUMP JUMPDEST PUSH2 0x890 DUP4 DUP4 PUSH2 0xE1F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x8D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6697B23200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8E2 DUP3 DUP3 PUSH2 0xEEE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8EF PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x8F8 DUP3 PUSH2 0x104D JUMP JUMPDEST PUSH2 0x902 DUP3 DUP3 PUSH2 0x1077 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x910 PUSH2 0x115F JUMP JUMPDEST POP PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x944 SWAP1 PUSH1 0x1 PUSH2 0x2063 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x599C34A8D0B3638870AFCFE3D7D8125602721889A7535CDA986EA656E63FC38C SWAP2 PUSH2 0x984 SWAP2 CHAINID SWAP2 SWAP1 CALLER SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH2 0x20EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP PUSH1 0x0 SLOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x9E3 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xA00 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xA0E JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xA45 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF92EE8A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xA79 JUMPI DUP5 SLOAD PUSH9 0xFF0000000000000000 NOT AND PUSH9 0x10000000000000000 OR DUP6 SSTORE JUMPDEST PUSH2 0xAED PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x42324D6573736167654272696467650000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH2 0x11A8 JUMP JUMPDEST PUSH2 0xAF5 PUSH2 0x11BA JUMP JUMPDEST PUSH2 0xAFD PUSH2 0x11BA JUMP JUMPDEST PUSH2 0xB08 PUSH1 0x0 CALLER PUSH2 0xE1F JUMP JUMPDEST POP PUSH2 0xB33 PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE CALLER PUSH2 0xE1F JUMP JUMPDEST POP PUSH2 0xB5E PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 CALLER PUSH2 0xE1F JUMP JUMPDEST POP PUSH1 0x0 DUP1 SSTORE DUP4 ISZERO PUSH2 0xBAE JUMPI DUP5 SLOAD PUSH9 0xFF0000000000000000 NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 DUP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 DUP1 SLOAD SWAP1 SWAP2 POP ISZERO DUP1 ISZERO PUSH2 0xBF4 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0xC40 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4549503731323A20556E696E697469616C697A65640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x702 JUMP JUMPDEST PUSH2 0xC48 PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0xC50 PUSH2 0x1297 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 SWAP13 SWAP4 SWAP12 POP SWAP2 SWAP10 POP CHAINID SWAP9 POP ADDRESS SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCA9 DUP12 DUP12 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x5E3 JUMP JUMPDEST SWAP1 POP PUSH2 0xD11 PUSH32 0x5635AC0328A174458FFE72E6C6023489A57FF03280729989530F567288831C91 PUSH2 0x383 DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP8 SWAP4 SWAP3 POP POP PUSH2 0x12E8 SWAP1 POP JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD5A DUP2 PUSH2 0xE12 JUMP JUMPDEST PUSH2 0x890 DUP4 DUP4 PUSH2 0xEEE JUMP JUMPDEST PUSH32 0x589D473BA17C0F47D494622893831497BAD25919B9AFB8E33E9521B8963FCCDE PUSH2 0xD8E DUP2 PUSH2 0xE12 JUMP JUMPDEST PUSH1 0x1 DUP3 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0x1B29EC9F95417D697093BA2F17CE0861FB5BCBB7D5011CDDE1020C9263ECC116 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DD PUSH2 0xDD7 PUSH2 0x1312 JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH2 0xE1C DUP2 CALLER PUSH2 0x1321 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEE4 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xE9A CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x5DD JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x5DD JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP6 MSTORE SWAP1 SWAP2 MSTORE DUP3 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xEE4 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x5DD JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x102D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1021 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH32 0xCAB03BC4DBCC648CD59D6BBE9F848D1E9092F914016AA290EE92E18700D1E6F9 PUSH2 0x902 DUP2 PUSH2 0xE12 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x10D1 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x10CE SWAP2 DUP2 ADD SWAP1 PUSH2 0x2137 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x10F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP2 EQ PUSH2 0x1155 JUMPI PUSH1 0x40 MLOAD PUSH32 0xAA1D49A400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH2 0x8E2 DUP4 DUP4 PUSH2 0x13AE JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11B0 PUSH2 0x1404 JUMP JUMPDEST PUSH2 0x902 DUP3 DUP3 PUSH2 0x146B JUMP JUMPDEST PUSH2 0x104B PUSH2 0x1404 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 SWAP2 PUSH2 0x1213 SWAP1 PUSH2 0x2150 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x123F SWAP1 PUSH2 0x2150 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x128C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1261 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x128C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x126F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 SWAP2 PUSH2 0x1213 SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x12F8 DUP7 DUP7 PUSH2 0x14DE JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1308 DUP3 DUP3 PUSH2 0x152B JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x131C PUSH2 0x162F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x902 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE2517D3F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x702 JUMP JUMPDEST PUSH2 0x13B7 DUP3 PUSH2 0x16A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x13FC JUMPI PUSH2 0x8E2 DUP3 DUP3 PUSH2 0x1732 JUMP JUMPDEST PUSH2 0x902 PUSH2 0x17A8 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH32 0xD7E6BCF800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1473 PUSH2 0x1404 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 PUSH2 0x14BF DUP5 DUP3 PUSH2 0x21D8 JUMP JUMPDEST POP PUSH1 0x3 DUP2 ADD PUSH2 0x14CE DUP4 DUP3 PUSH2 0x21D8 JUMP JUMPDEST POP PUSH1 0x0 DUP1 DUP3 SSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x1518 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x150A DUP9 DUP3 DUP6 DUP6 PUSH2 0x17E0 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x1524 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x153F JUMPI PUSH2 0x153F PUSH2 0x2298 JUMP JUMPDEST SUB PUSH2 0x1548 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x155C JUMPI PUSH2 0x155C PUSH2 0x2298 JUMP JUMPDEST SUB PUSH2 0x1593 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF645EEDF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15A7 JUMPI PUSH2 0x15A7 PUSH2 0x2298 JUMP JUMPDEST SUB PUSH2 0x15E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFCE698F700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15F5 JUMPI PUSH2 0x15F5 PUSH2 0x2298 JUMP JUMPDEST SUB PUSH2 0x902 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD78BCE0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH2 0x165A PUSH2 0x18AF JUMP JUMPDEST PUSH2 0x1662 PUSH2 0x192B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x16D9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x174F SWAP2 SWAP1 PUSH2 0x22AE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x178A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x178F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x179F DUP6 DUP4 DUP4 PUSH2 0x1981 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x104B JUMPI PUSH1 0x40 MLOAD PUSH32 0xB398979F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x181B JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x18A5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x186F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x189B JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x18A5 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 DUP2 PUSH2 0x18DB PUSH2 0x11C2 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x18F3 JUMPI DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD DUP1 ISZERO PUSH2 0x1902 JUMPI SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D100 DUP2 PUSH2 0x1957 PUSH2 0x1297 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x196F JUMPI DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 ADD SLOAD DUP1 ISZERO PUSH2 0x1902 JUMPI SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1996 JUMPI PUSH2 0x1991 DUP3 PUSH2 0x19F9 JUMP JUMPDEST PUSH2 0x19F2 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x19AD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x19EF JUMPI PUSH1 0x40 MLOAD PUSH32 0x9996B31500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x702 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1A09 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x1425EA4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x19F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1A94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1AAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1ADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x1AFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH2 0x1B14 PUSH1 0x40 DUP10 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1B29 PUSH1 0x80 DUP10 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B51 DUP11 DUP3 DUP12 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1B80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD SWAP7 POP PUSH2 0x1B97 PUSH1 0x40 DUP11 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP6 POP PUSH2 0x1BA5 PUSH1 0x60 DUP11 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1BC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BCE DUP13 DUP4 DUP14 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0xA0 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1BE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1BFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1C0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP13 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x1C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1C64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x1C74 PUSH1 0x20 DUP5 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CAF DUP4 PUSH2 0x1A7D JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1CE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1CF2 JUMPI PUSH2 0x1CF2 PUSH2 0x1C7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1D1A JUMPI PUSH2 0x1D1A PUSH2 0x1C7D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1D33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0x1D7B PUSH1 0x20 DUP7 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1D97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DA3 DUP8 DUP3 DUP9 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DCA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DB2 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1DEB DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1DAF JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP9 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 DUP2 DUP5 ADD MSTORE PUSH2 0x1E3B PUSH1 0xE0 DUP5 ADD DUP11 PUSH2 0x1DD3 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x1E4D DUP2 DUP11 PUSH2 0x1DD3 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD DUP10 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD DUP8 SWAP1 MSTORE DUP5 DUP2 SUB PUSH1 0xC0 DUP7 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE DUP4 DUP8 ADD SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E9F JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1E83 JUMP JUMPDEST POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x19F2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1DD3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x1EE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 CALLDATALOAD SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH2 0x1EF9 PUSH1 0x40 DUP12 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP6 POP PUSH2 0x1F0E PUSH1 0x80 DUP12 ADD PUSH2 0x1A7D JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1F2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F37 DUP14 DUP4 DUP15 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0xC0 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1F50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F5D DUP13 DUP3 DUP14 ADD PUSH2 0x1A99 JUMP JUMPDEST SWAP2 POP DUP1 SWAP4 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST DUP9 DUP2 MSTORE DUP8 PUSH1 0x20 DUP3 ADD MSTORE DUP7 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x60 DUP5 ADD MSTORE DUP7 PUSH1 0x80 DUP5 ADD MSTORE DUP1 DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE POP PUSH1 0xE0 PUSH1 0xC0 DUP4 ADD MSTORE PUSH2 0x1FE2 PUSH1 0xE0 DUP4 ADD DUP5 DUP7 PUSH2 0x1F74 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x201D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2038 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1ADB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x5DD JUMPI PUSH2 0x5DD PUSH2 0x204D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x2088 JUMPI PUSH2 0x2088 PUSH2 0x204D JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP6 DUP2 MSTORE DUP5 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x20BE PUSH1 0x80 DUP4 ADD DUP5 DUP7 PUSH2 0x1F74 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE DUP7 PUSH1 0x60 DUP5 ADD MSTORE DUP1 DUP7 AND PUSH1 0x80 DUP5 ADD MSTORE POP PUSH1 0xC0 PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0x212A PUSH1 0xC0 DUP4 ADD DUP5 DUP7 PUSH2 0x1F74 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2164 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2184 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x21B1 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21D0 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x21BD JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x21F2 JUMPI PUSH2 0x21F2 PUSH2 0x1C7D JUMP JUMPDEST PUSH2 0x2206 DUP2 PUSH2 0x2200 DUP5 SLOAD PUSH2 0x2150 JUMP JUMPDEST DUP5 PUSH2 0x218A JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x223B JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x2223 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x21D0 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x226A JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x224B JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x2288 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x22C0 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1DAF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO 0xAA SSTORE CALLER BLOCKHASH DUP3 0x26 PUSH32 0x97D7F7928DD15BA98B2F1001512DE00B94B1BC93CB86AB6564736F6C63430008 EQ STOP CALLER ","sourceMap":"611:3350:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:0;;;;;;;;;;-1:-1:-1;3443:202:0;;;;;:::i;:::-;;:::i;:::-;;;516:14:20;;509:22;491:41;;479:2;464:18;3443:202:0;;;;;;;;3629:329:19;;;;;;;;;;-1:-1:-1;3629:329:19;;;;;:::i;:::-;;:::i;:::-;;;2011:25:20;;;1999:2;1984:18;3629:329:19;1865:177:20;2112:848:19;;;;;;;;;;-1:-1:-1;2112:848:19;;;;;:::i;:::-;;:::i;:::-;;4759:191:0;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;;4759:191;5246:136;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;6348:245::-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;4158:214:2:-;;;;;;:::i;:::-;;:::i;930:23:19:-;;;;;;;;;;;;;;;;3705:134:2;;;;;;;;;;;;;:::i;2966:267:19:-;;;;;;;;;;-1:-1:-1;2966:267:19;;;;;:::i;:::-;;:::i;959:60::-;;;;;;;;;;;;996:23;959:60;;1197:325;;;;;;;;;;;;;:::i;5173:903:4:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;3809:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;;;;;;;3732:207;1169:21:19;;;;;;;;;;;;;;;;2317:49:0;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;1819:58:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1025:64:19:-;;;;;;;;;;;;1064:25;1025:64;;3239:384;;;;;;;;;;-1:-1:-1;3239:384:19;;;;;:::i;:::-;;:::i;1095:68::-;;;;;;;;;;;;1136:27;1095:68;;751:173;;;;;;;;;;;;792:132;751:173;;5662:138:0;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;1665:131:19:-;;;;;;;;;;-1:-1:-1;1665:131:19;;;;;:::i;:::-;;:::i;3443:202:0:-;3528:4;3551:47;;;3566:32;3551:47;;:87;;-1:-1:-1;1148:25:5;1133:40;;;;3602:36:0;3544:94;3443:202;-1:-1:-1;;3443:202:0:o;3629:329:19:-;3797:7;3823:128;792:132;3876:13;3891:7;3900:11;3913;3926:16;3944:4;;3850:99;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3840:110;;;;;;3823:16;:128::i;:::-;3816:135;3629:329;-1:-1:-1;;;;;;;;3629:329:19:o;2112:848::-;2282:15;2315:9;2311:261;2330:21;;;2311:261;;;2371:12;2386:97;2393:7;2402:13;2417:11;2430:13;2445:16;2463:4;;2469:10;;2480:1;2469:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;2386:97::-;2371:112;;2500:7;2496:66;;;2537:11;:7;2547:1;2537:11;:::i;:::-;2527:21;;2496:66;-1:-1:-1;2353:3:19;;;;:::i;:::-;;;;2311:261;;;;2600:6;;2589:7;:17;;2581:62;;;;-1:-1:-1;;;2581:62:19;;11388:2:20;2581:62:19;;;11370:21:20;;;11407:18;;;11400:30;11466:34;11446:18;;;11439:62;11518:18;;2581:62:19;;;;;;;;;-1:-1:-1;;;;;2658:32:19;;;2654:205;;2721:82;;;;;2706:12;;-1:-1:-1;;;;;2721:39:19;;;;;:82;;2761:13;;2776:7;;2785:11;;2798:4;;;;2721:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2706:97;;2825:7;2817:31;;;;-1:-1:-1;;;2817:31:19;;12544:2:20;2817:31:19;;;12526:21:20;12583:2;12563:18;;;12556:30;12622:13;12602:18;;;12595:41;12653:18;;2817:31:19;12342:335:20;2817:31:19;2692:167;2654:205;2873:80;2878:13;2893:7;2902:11;2915:13;2930:16;2948:4;;2873:80;;;;;;;;;;;;:::i;:::-;;;;;;;;2272:688;2112:848;;;;;;;;:::o;5246:136:0:-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;-1:-1:-1;;;;;6441:34:0;;966:10:3;6441:34:0;6437:102;;6498:30;;;;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;4158:214:2:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;3705:134::-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;1327:66:9::1;3705:134:2::0;:::o;2966:267:19:-;3066:7;3096:8;;:12;;3107:1;3096:12;:::i;:::-;3085:8;:23;;;3123:78;;;;;;3128:13;;3085:23;3153:10;;3165:11;;3178:16;;3196:4;;;;3123:78;:::i;:::-;;;;;;;;-1:-1:-1;3218:8:19;;2966:267;;;;;;:::o;1197:325::-;8870:21:1;4302:15;;;;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:1;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:1;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;5013:22:1;;;;;4979:67;1248:37:19::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;::::0;:13:::1;:37::i;:::-;1295:22;:20;:22::i;:::-;1327:24;:22;:24::i;:::-;1361:42;2362:4:0;1392:10:19;1361;:42::i;:::-;;1413:34;996:23;1436:10;1413;:34::i;:::-;;1457:36;1064:25;1482:10;1457;:36::i;:::-;-1:-1:-1::0;1514:1:19::1;1503:12:::0;;5066:101:1;;;;5100:23;;-1:-1:-1;;5100:23:1;;;5142:14;;-1:-1:-1;13522:50:20;;5142:14:1;;13510:2:20;13495:18;5142:14:1;;;;;;;5066:101;4092:1081;;;;;1197:325:19:o;5173:903:4:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;2839:21;5777:13;;5511:45;;-1:-1:-1;5777:18:4;:43;;;;-1:-1:-1;5799:16:4;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:4;;13785:2:20;5769:77:4;;;13767:21:20;13824:2;13804:18;;;13797:30;13863:23;13843:18;;;13836:51;13904:18;;5769:77:4;13583:345:20;5769:77:4;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;5857:212;;;;-1:-1:-1;5857:212:4;;-1:-1:-1;5965:13:4;;-1:-1:-1;6000:4:4;;-1:-1:-1;6027:1:4;-1:-1:-1;6043:16:4;-1:-1:-1;5857:212:4;-1:-1:-1;;5173:903:4:o;3239:384:19:-;3432:4;3449:14;3467:82;3476:13;3491:7;3500:11;3513;3526:16;3544:4;;3467:8;:82::i;:::-;3449:100;;3566:50;1136:27;3590:25;3605:9;;3590:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3590:6:19;;:25;-1:-1:-1;;3590:14:19;:25;-1:-1:-1;3590:25:19:i;3566:50::-;3559:57;3239:384;-1:-1:-1;;;;;;;;;;;3239:384:19:o;5662:138:0:-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;1665:131:19:-:0;996:23;3191:16:0;3202:4;3191:10;:16::i;:::-;1741:6:19::1;:16:::0;;;1772:17:::1;::::0;2011:25:20;;;1772:17:19::1;::::0;1999:2:20;1984:18;1772:17:19::1;;;;;;;1665:131:::0;;:::o;4946:176:4:-;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3555:4:15;3549:11;3585:10;3573:23;;3625:4;3616:14;;3609:39;;;;3677:4;3668:14;;3661:34;3733:4;3718:20;;;3353:401;4148:103:0;4214:30;4225:4;966:10:3;4214::0;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;;;;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:3;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;;;;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:3;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4599:312:2;4679:4;-1:-1:-1;;;;;4688:6:2;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:2;:32;1327:66:9;2035:53;-1:-1:-1;;;;;2035:53:9;;1957:138;4749:32:2;-1:-1:-1;;;;;4749:42:2;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:2;;;;;;;;;;;4654:251;4599:312::o;1528:131:19:-;1064:25;3191:16:0;3202:4;3191:10;:16::i;6052:538:2:-;6169:17;-1:-1:-1;;;;;6151:50:2;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:2;;;;;;;;-1:-1:-1;;6151:52:2;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:2;;-1:-1:-1;;;;;14286:55:20;;6513:60:2;;;14268:74:20;14241:18;;6513:60:2;14122:226:20;6147:437:2;1327:66:9;6245:40:2;;6241:120;;6312:34;;;;;;;;2011:25:20;;;1984:18;;6312:34:2;1865:177:20;6241:120:2;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:2;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:2;;;;;;;;;;;3446:147:4;6931:20:1;:18;:20::i;:::-;3548:38:4::1;3572:4;3578:7;3548:23;:38::i;3231:65:0:-:0;6931:20:1;:18;:20::i;6300:155:4:-;6441:7;6434:14;;6354:13;;2839:21;;6434:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6300:155;:::o;6682:161::-;6826:10;6819:17;;6739:13;;2839:21;;6819:17;;;:::i;3702:255:14:-;3780:7;3800:17;3819:18;3839:16;3859:27;3870:4;3876:9;3859:10;:27::i;:::-;3799:87;;;;;;3896:28;3908:5;3915:8;3896:11;:28::i;:::-;-1:-1:-1;3941:9:14;;3702:255;-1:-1:-1;;;;3702:255:14:o;4015:109:4:-;4068:7;4094:23;:21;:23::i;:::-;4087:30;;4015:109;:::o;4381:197:0:-;3809:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;;;;4464:108;;4514:47;;;;;-1:-1:-1;;;;;14987:55:20;;4514:47:0;;;14969:74:20;15059:18;;;15052:34;;;14942:18;;4514:47:0;14795:297:20;2779:335:9;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:9;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;7084:141:1:-;8870:21;8560:40;;;;;;7146:73;;7191:17;;;;;;;;;;;;;;3599:330:4;6931:20:1;:18;:20::i;:::-;2839:21:4;3766:7;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:4::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:4::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:4:o;2129:766:14:-;2210:7;2219:12;2233:7;2256:9;:16;2276:2;2256:22;2252:637;;2592:4;2577:20;;2571:27;2641:4;2626:20;;2620:27;2698:4;2683:20;;2677:27;2294:9;2669:36;2739:25;2750:4;2669:36;2571:27;2620;2739:10;:25::i;:::-;2732:32;;;;;;;;;;;2252:637;-1:-1:-1;;2860:16:14;;2811:1;;-1:-1:-1;2815:35:14;;2252:637;2129:766;;;;;:::o;7196:532::-;7291:20;7282:5;:29;;;;;;;;:::i;:::-;;7278:444;;7196:532;;:::o;7278:444::-;7387:29;7378:5;:38;;;;;;;;:::i;:::-;;7374:348;;7439:23;;;;;;;;;;;;;;7374:348;7492:35;7483:5;:44;;;;;;;;:::i;:::-;;7479:243;;7550:46;;;;;;;;2011:25:20;;;1984:18;;7550:46:14;1865:177:20;7479:243:14;7626:30;7617:5;:39;;;;;;;;:::i;:::-;;7613:109;;7679:32;;;;;;;;2011:25:20;;;1984:18;;7679:32:14;1865:177:20;4130:191:4;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;17749:25:20;;;;17790:18;;17783:34;;;;17833:18;;;17826:34;4284:13:4;17876:18:20;;;17869:34;4307:4:4;17919:19:20;;;17912:84;17721:19;;4221:92:4;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;2186:281:9:-;2263:17;-1:-1:-1;;;;;2263:29:9;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:9;;-1:-1:-1;;;;;14286:55:20;;2320:47:9;;;14268:74:20;14241:18;;2320:47:9;14122:226:20;2259:119:9;1327:66;2387:73;;;;-1:-1:-1;;;;;2387:73:9;;;;;;;;;;2186:281::o;4106:253:11:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:11;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:11:o;6598:122:9:-;6648:9;:13;6644:70;;6684:19;;;;;;;;;;;;;;5140:1530:14;5266:7;;;6199:66;6186:79;;6182:164;;;-1:-1:-1;6297:1:14;;-1:-1:-1;6301:30:14;;-1:-1:-1;6333:1:14;6281:54;;6182:164;6457:24;;;6440:14;6457:24;;;;;;;;;18526:25:20;;;18599:4;18587:17;;18567:18;;;18560:45;;;;18621:18;;;18614:34;;;18664:18;;;18657:34;;;6457:24:14;;18498:19:20;;6457:24:14;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6457:24:14;;-1:-1:-1;;6457:24:14;;;-1:-1:-1;;;;;;;6495:20:14;;6491:113;;-1:-1:-1;6547:1:14;;-1:-1:-1;6551:29:14;;-1:-1:-1;6547:1:14;;-1:-1:-1;6531:62:14;;6491:113;6622:6;-1:-1:-1;6630:20:14;;-1:-1:-1;6630:20:14;;-1:-1:-1;5140:1530:14;;;;;;;;;:::o;7058:687:4:-;7108:7;2839:21;7108:7;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:4;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:4:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:4:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;2839:21;8019:7;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:4;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:4:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:4:o;4625:582:11:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:11;;;:23;5045:49;5041:119;;;5121:24;;;;;-1:-1:-1;;;;;14286:55:20;;5121:24:11;;;14268:74:20;14241:18;;5121:24:11;14122:226:20;5041:119:11;-1:-1:-1;5180:10:11;4793:408;4625:582;;;;;:::o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;;;;;;;;;;;;;14:332:20;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;543:196;611:20;;-1:-1:-1;;;;;660:54:20;;650:65;;640:93;;729:1;726;719:12;640:93;543:196;;;:::o;744:347::-;795:8;805:6;859:3;852:4;844:6;840:17;836:27;826:55;;877:1;874;867:12;826:55;-1:-1:-1;900:20:20;;943:18;932:30;;929:50;;;975:1;972;965:12;929:50;1012:4;1004:6;1000:17;988:29;;1064:3;1057:4;1048:6;1040;1036:19;1032:30;1029:39;1026:59;;;1081:1;1078;1071:12;1026:59;744:347;;;;;:::o;1096:764::-;1211:6;1219;1227;1235;1243;1251;1259;1312:3;1300:9;1291:7;1287:23;1283:33;1280:53;;;1329:1;1326;1319:12;1280:53;1365:9;1352:23;1342:33;;1422:2;1411:9;1407:18;1394:32;1384:42;;1445:38;1479:2;1468:9;1464:18;1445:38;:::i;:::-;1435:48;;1530:2;1519:9;1515:18;1502:32;1492:42;;1553:39;1587:3;1576:9;1572:19;1553:39;:::i;:::-;1543:49;;1643:3;1632:9;1628:19;1615:33;1671:18;1663:6;1660:30;1657:50;;;1703:1;1700;1693:12;1657:50;1742:58;1792:7;1783:6;1772:9;1768:22;1742:58;:::i;:::-;1096:764;;;;-1:-1:-1;1096:764:20;;-1:-1:-1;1096:764:20;;;;1716:84;;-1:-1:-1;;;1096:764:20:o;2047:1200::-;2200:6;2208;2216;2224;2232;2240;2248;2256;2309:3;2297:9;2288:7;2284:23;2280:33;2277:53;;;2326:1;2323;2316:12;2277:53;2362:9;2349:23;2339:33;;2419:2;2408:9;2404:18;2391:32;2381:42;;2442:38;2476:2;2465:9;2461:18;2442:38;:::i;:::-;2432:48;;2499:38;2533:2;2522:9;2518:18;2499:38;:::i;:::-;2489:48;;2588:3;2577:9;2573:19;2560:33;2612:18;2653:2;2645:6;2642:14;2639:34;;;2669:1;2666;2659:12;2639:34;2708:58;2758:7;2749:6;2738:9;2734:22;2708:58;:::i;:::-;2785:8;;-1:-1:-1;2682:84:20;-1:-1:-1;2873:3:20;2858:19;;2845:33;;-1:-1:-1;2890:16:20;;;2887:36;;;2919:1;2916;2909:12;2887:36;2957:8;2946:9;2942:24;2932:34;;3004:7;2997:4;2993:2;2989:13;2985:27;2975:55;;3026:1;3023;3016:12;2975:55;3066:2;3053:16;3092:2;3084:6;3081:14;3078:34;;;3108:1;3105;3098:12;3078:34;3161:7;3156:2;3146:6;3143:1;3139:14;3135:2;3131:23;3127:32;3124:45;3121:65;;;3182:1;3179;3172:12;3121:65;3213:2;3209;3205:11;3195:21;;3235:6;3225:16;;;;;2047:1200;;;;;;;;;;;:::o;3252:180::-;3311:6;3364:2;3352:9;3343:7;3339:23;3335:32;3332:52;;;3380:1;3377;3370:12;3332:52;-1:-1:-1;3403:23:20;;3252:180;-1:-1:-1;3252:180:20:o;3437:254::-;3505:6;3513;3566:2;3554:9;3545:7;3541:23;3537:32;3534:52;;;3582:1;3579;3572:12;3534:52;3618:9;3605:23;3595:33;;3647:38;3681:2;3670:9;3666:18;3647:38;:::i;:::-;3637:48;;3437:254;;;;;:::o;3696:184::-;-1:-1:-1;;;3745:1:20;3738:88;3845:4;3842:1;3835:15;3869:4;3866:1;3859:15;3885:995;3962:6;3970;4023:2;4011:9;4002:7;3998:23;3994:32;3991:52;;;4039:1;4036;4029:12;3991:52;4062:29;4081:9;4062:29;:::i;:::-;4052:39;;4142:2;4131:9;4127:18;4114:32;4165:18;4206:2;4198:6;4195:14;4192:34;;;4222:1;4219;4212:12;4192:34;4260:6;4249:9;4245:22;4235:32;;4305:7;4298:4;4294:2;4290:13;4286:27;4276:55;;4327:1;4324;4317:12;4276:55;4363:2;4350:16;4385:2;4381;4378:10;4375:36;;;4391:18;;:::i;:::-;4466:2;4460:9;4434:2;4520:13;;-1:-1:-1;;4516:22:20;;;4540:2;4512:31;4508:40;4496:53;;;4564:18;;;4584:22;;;4561:46;4558:72;;;4610:18;;:::i;:::-;4650:10;4646:2;4639:22;4685:2;4677:6;4670:18;4725:7;4720:2;4715;4711;4707:11;4703:20;4700:33;4697:53;;;4746:1;4743;4736:12;4697:53;4802:2;4797;4793;4789:11;4784:2;4776:6;4772:15;4759:46;4847:1;4842:2;4837;4829:6;4825:15;4821:24;4814:35;4868:6;4858:16;;;;;;;3885:995;;;;;:::o;5067:551::-;5155:6;5163;5171;5179;5232:2;5220:9;5211:7;5207:23;5203:32;5200:52;;;5248:1;5245;5238:12;5200:52;5284:9;5271:23;5261:33;;5313:38;5347:2;5336:9;5332:18;5313:38;:::i;:::-;5303:48;;5402:2;5391:9;5387:18;5374:32;5429:18;5421:6;5418:30;5415:50;;;5461:1;5458;5451:12;5415:50;5500:58;5550:7;5541:6;5530:9;5526:22;5500:58;:::i;:::-;5067:551;;;;-1:-1:-1;5577:8:20;-1:-1:-1;;;;5067:551:20:o;5623:250::-;5708:1;5718:113;5732:6;5729:1;5726:13;5718:113;;;5808:11;;;5802:18;5789:11;;;5782:39;5754:2;5747:10;5718:113;;;-1:-1:-1;;5865:1:20;5847:16;;5840:27;5623:250::o;5878:271::-;5920:3;5958:5;5952:12;5985:6;5980:3;5973:19;6001:76;6070:6;6063:4;6058:3;6054:14;6047:4;6040:5;6036:16;6001:76;:::i;:::-;6131:2;6110:15;-1:-1:-1;;6106:29:20;6097:39;;;;6138:4;6093:50;;5878:271;-1:-1:-1;;5878:271:20:o;6154:1335::-;6551:66;6543:6;6539:79;6528:9;6521:98;6502:4;6638:2;6676:3;6671:2;6660:9;6656:18;6649:31;6703:46;6744:3;6733:9;6729:19;6721:6;6703:46;:::i;:::-;6797:9;6789:6;6785:22;6780:2;6769:9;6765:18;6758:50;6831:33;6857:6;6849;6831:33;:::i;:::-;6895:2;6880:18;;6873:34;;;-1:-1:-1;;;;;6944:55:20;;6938:3;6923:19;;6916:84;7031:3;7016:19;;7009:35;;;7081:22;;;7075:3;7060:19;;7053:51;7153:13;;7175:22;;;7251:15;;;;-1:-1:-1;7213:15:20;;;;-1:-1:-1;7294:169:20;7308:6;7305:1;7302:13;7294:169;;;7369:13;;7357:26;;7438:15;;;;7403:12;;;;7330:1;7323:9;7294:169;;;-1:-1:-1;7480:3:20;;6154:1335;-1:-1:-1;;;;;;;;;;;;6154:1335:20:o;7494:220::-;7643:2;7632:9;7625:21;7606:4;7663:45;7704:2;7693:9;7689:18;7681:6;7663:45;:::i;7719:1073::-;7854:6;7862;7870;7878;7886;7894;7902;7910;7918;7971:3;7959:9;7950:7;7946:23;7942:33;7939:53;;;7988:1;7985;7978:12;7939:53;8024:9;8011:23;8001:33;;8081:2;8070:9;8066:18;8053:32;8043:42;;8104:38;8138:2;8127:9;8123:18;8104:38;:::i;:::-;8094:48;;8189:2;8178:9;8174:18;8161:32;8151:42;;8212:39;8246:3;8235:9;8231:19;8212:39;:::i;:::-;8202:49;;8302:3;8291:9;8287:19;8274:33;8326:18;8367:2;8359:6;8356:14;8353:34;;;8383:1;8380;8373:12;8353:34;8422:58;8472:7;8463:6;8452:9;8448:22;8422:58;:::i;:::-;8499:8;;-1:-1:-1;8396:84:20;-1:-1:-1;8587:3:20;8572:19;;8559:33;;-1:-1:-1;8604:16:20;;;8601:36;;;8633:1;8630;8623:12;8601:36;;8672:60;8724:7;8713:8;8702:9;8698:24;8672:60;:::i;:::-;8646:86;;8751:8;8741:18;;;8778:8;8768:18;;;7719:1073;;;;;;;;;;;:::o;8982:266::-;9070:6;9065:3;9058:19;9122:6;9115:5;9108:4;9103:3;9099:14;9086:43;-1:-1:-1;9174:1:20;9149:16;;;9167:4;9145:27;;;9138:38;;;;9230:2;9209:15;;;-1:-1:-1;;9205:29:20;9196:39;;;9192:50;;8982:266::o;9253:754::-;9578:6;9567:9;9560:25;9621:6;9616:2;9605:9;9601:18;9594:34;9664:6;9659:2;9648:9;9644:18;9637:34;9541:4;-1:-1:-1;;;;;9780:2:20;9772:6;9768:15;9763:2;9752:9;9748:18;9741:43;9821:6;9815:3;9804:9;9800:19;9793:35;9877:2;9869:6;9865:15;9859:3;9848:9;9844:19;9837:44;;9918:3;9912;9901:9;9897:19;9890:32;9939:62;9996:3;9985:9;9981:19;9973:6;9965;9939:62;:::i;:::-;9931:70;9253:754;-1:-1:-1;;;;;;;;;;9253:754:20:o;10012:184::-;-1:-1:-1;;;10061:1:20;10054:88;10161:4;10158:1;10151:15;10185:4;10182:1;10175:15;10201:521;10278:4;10284:6;10344:11;10331:25;10438:2;10434:7;10423:8;10407:14;10403:29;10399:43;10379:18;10375:68;10365:96;;10457:1;10454;10447:12;10365:96;10484:33;;10536:20;;;-1:-1:-1;10579:18:20;10568:30;;10565:50;;;10611:1;10608;10601:12;10565:50;10644:4;10632:17;;-1:-1:-1;10675:14:20;10671:27;;;10661:38;;10658:58;;;10712:1;10709;10702:12;10727:184;-1:-1:-1;;;10776:1:20;10769:88;10876:4;10873:1;10866:15;10900:4;10897:1;10890:15;10916:125;10981:9;;;11002:10;;;10999:36;;;11015:18;;:::i;11046:135::-;11085:3;11106:17;;;11103:43;;11126:18;;:::i;:::-;-1:-1:-1;11173:1:20;11162:13;;11046:135::o;11547:508::-;11788:6;11777:9;11770:25;11831:6;11826:2;11815:9;11811:18;11804:34;-1:-1:-1;;;;;11878:6:20;11874:55;11869:2;11858:9;11854:18;11847:83;11966:3;11961:2;11950:9;11946:18;11939:31;11751:4;11987:62;12044:3;12033:9;12029:19;12021:6;12013;11987:62;:::i;:::-;11979:70;11547:508;-1:-1:-1;;;;;;;11547:508:20:o;12060:277::-;12127:6;12180:2;12168:9;12159:7;12155:23;12151:32;12148:52;;;12196:1;12193;12186:12;12148:52;12228:9;12222:16;12281:5;12274:13;12267:21;12260:5;12257:32;12247:60;;12303:1;12300;12293:12;12682:682;12979:6;12968:9;12961:25;13022:6;13017:2;13006:9;13002:18;12995:34;12942:4;-1:-1:-1;;;;;13138:2:20;13130:6;13126:15;13121:2;13110:9;13106:18;13099:43;13178:6;13173:2;13162:9;13158:18;13151:34;13234:2;13226:6;13222:15;13216:3;13205:9;13201:19;13194:44;;13275:3;13269;13258:9;13254:19;13247:32;13296:62;13353:3;13342:9;13338:19;13330:6;13322;13296:62;:::i;:::-;13288:70;12682:682;-1:-1:-1;;;;;;;;;12682:682:20:o;13933:184::-;14003:6;14056:2;14044:9;14035:7;14031:23;14027:32;14024:52;;;14072:1;14069;14062:12;14024:52;-1:-1:-1;14095:16:20;;13933:184;-1:-1:-1;13933:184:20:o;14353:437::-;14432:1;14428:12;;;;14475;;;14496:61;;14550:4;14542:6;14538:17;14528:27;;14496:61;14603:2;14595:6;14592:14;14572:18;14569:38;14566:218;;-1:-1:-1;;;14637:1:20;14630:88;14741:4;14738:1;14731:15;14769:4;14766:1;14759:15;14566:218;;14353:437;;;:::o;15223:545::-;15325:2;15320:3;15317:11;15314:448;;;15361:1;15386:5;15382:2;15375:17;15431:4;15427:2;15417:19;15501:2;15489:10;15485:19;15482:1;15478:27;15472:4;15468:38;15537:4;15525:10;15522:20;15519:47;;;-1:-1:-1;15560:4:20;15519:47;15615:2;15610:3;15606:12;15603:1;15599:20;15593:4;15589:31;15579:41;;15670:82;15688:2;15681:5;15678:13;15670:82;;;15733:17;;;15714:1;15703:13;15670:82;;;15674:3;;;15223:545;;;:::o;15944:1352::-;16070:3;16064:10;16097:18;16089:6;16086:30;16083:56;;;16119:18;;:::i;:::-;16148:97;16238:6;16198:38;16230:4;16224:11;16198:38;:::i;:::-;16192:4;16148:97;:::i;:::-;16300:4;;16364:2;16353:14;;16381:1;16376:663;;;;17083:1;17100:6;17097:89;;;-1:-1:-1;17152:19:20;;;17146:26;17097:89;-1:-1:-1;;15901:1:20;15897:11;;;15893:24;15889:29;15879:40;15925:1;15921:11;;;15876:57;17199:81;;16346:944;;16376:663;15170:1;15163:14;;;15207:4;15194:18;;-1:-1:-1;;16412:20:20;;;16530:236;16544:7;16541:1;16538:14;16530:236;;;16633:19;;;16627:26;16612:42;;16725:27;;;;16693:1;16681:14;;;;16560:19;;16530:236;;;16534:3;16794:6;16785:7;16782:19;16779:201;;;16855:19;;;16849:26;-1:-1:-1;;16938:1:20;16934:14;;;16950:3;16930:24;16926:37;16922:42;16907:58;16892:74;;16779:201;-1:-1:-1;;;;;17026:1:20;17010:14;;;17006:22;16993:36;;-1:-1:-1;15944:1352:20:o;17301:184::-;-1:-1:-1;;;17350:1:20;17343:88;17450:4;17447:1;17440:15;17474:4;17471:1;17464:15;18007:287;18136:3;18174:6;18168:13;18190:66;18249:6;18244:3;18237:4;18229:6;18225:17;18190:66;:::i;:::-;18272:16;;;;;18007:287;-1:-1:-1;;18007:287:20:o"},"methodIdentifiers":{"ADMIN_ROLE()":"75b238fc","DEFAULT_ADMIN_ROLE()":"a217fddf","SEND_HASH_TYPE()":"cc8f4261","SendHash(uint256,uint256,address,uint256,address,bytes)":"04760f2e","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","UPGRADE_ROLE()":"b908afa8","VALIDATOR_ROLE()":"c49baebe","call(uint256,address,bytes)":"6ba3300c","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","send(uint256,uint256,address,address,bytes,bytes[])":"0d682acb","sequence()":"529d15cc","setWeight(uint256)":"fc1711f2","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286","verify(uint256,uint256,address,uint256,address,bytes,bytes)":"bc5c11aa","weight()":"a1aab33f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"to_chain_id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Call\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"to_chain_id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Send\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"SetWeight\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_HASH_TYPE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"to_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SendHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"to_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequence\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_weight\",\"type\":\"uint256\"}],\"name\":\"setWeight\",\"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\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"to_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/message/B2MessageBridge.sol\":\"B2MessageBridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x85462422a22578744581e012e9aa0a391958cb360288b0b63f29bf0431d70327\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bc529e2b9b28da5d26da451058250d85afcaa3c5083ee273ac68fa6bf956b78\",\"dweb:/ipfs/Qmd3Aq59ztmoVmHigsaR4YjkXWKERVpjfQ4a2PHk7Ke6Rx\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/message/B2MessageBridge.sol\":{\"keccak256\":\"0x7b2637c7daa0c9177ecc0f9d41f8529ce66575522bc5e64a1778ed356116b800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2bff07aff63543c0b9445aebd14f6d361194d5328d7f2ed178e6eb1f6fb383c\",\"dweb:/ipfs/QmdoMpVpz1R4M72N8sHTUozUFBxZQ6bGTxqGTQMZ8djiQM\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":3909,"contract":"contracts/message/B2MessageBridge.sol:B2MessageBridge","label":"sequence","offset":0,"slot":"0","type":"t_uint256"},{"astId":3926,"contract":"contracts/message/B2MessageBridge.sol:B2MessageBridge","label":"weight","offset":0,"slot":"1","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}}},"BusinessContract":{"abi":[{"inputs":[{"internalType":"uint256","name":"from_chain_id","type":"uint256"},{"internalType":"uint256","name":"from_id","type":"uint256"},{"internalType":"address","name":"from_sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"send(uint256,uint256,address,bytes)":"e09ee870"}},"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"from_chain_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"from_id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from_sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/message/B2MessageBridge.sol\":\"BusinessContract\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x85462422a22578744581e012e9aa0a391958cb360288b0b63f29bf0431d70327\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bc529e2b9b28da5d26da451058250d85afcaa3c5083ee273ac68fa6bf956b78\",\"dweb:/ipfs/Qmd3Aq59ztmoVmHigsaR4YjkXWKERVpjfQ4a2PHk7Ke6Rx\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"contracts/message/B2MessageBridge.sol\":{\"keccak256\":\"0x7b2637c7daa0c9177ecc0f9d41f8529ce66575522bc5e64a1778ed356116b800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2bff07aff63543c0b9445aebd14f6d361194d5328d7f2ed178e6eb1f6fb383c\",\"dweb:/ipfs/QmdoMpVpz1R4M72N8sHTUozUFBxZQ6bGTxqGTQMZ8djiQM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}}}}} \ No newline at end of file diff --git a/contracts/artifacts/contracts/business/BusinessContractExample.sol/BusinessContractExample.dbg.json b/contracts/artifacts/contracts/business/BusinessContractExample.sol/BusinessContractExample.dbg.json deleted file mode 100644 index 49653469..00000000 --- a/contracts/artifacts/contracts/business/BusinessContractExample.sol/BusinessContractExample.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/abe90607c0f29f9069da9533b2d74eec.json" -} diff --git a/contracts/artifacts/contracts/business/BusinessContractExample.sol/BusinessContractExample.json b/contracts/artifacts/contracts/business/BusinessContractExample.sol/BusinessContractExample.json deleted file mode 100644 index 889f4269..00000000 --- a/contracts/artifacts/contracts/business/BusinessContractExample.sol/BusinessContractExample.json +++ /dev/null @@ -1,524 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BusinessContractExample", - "sourceName": "contracts/business/BusinessContractExample.sol", - "abi": [ - { - "inputs": [], - "name": "AccessControlBadConfirmation", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "neededRole", - "type": "bytes32" - } - ], - "name": "AccessControlUnauthorizedAccount", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "AddressEmptyCode", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "ERC1967InvalidImplementation", - "type": "error" - }, - { - "inputs": [], - "name": "ERC1967NonPayable", - "type": "error" - }, - { - "inputs": [], - "name": "FailedInnerCall", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidInitialization", - "type": "error" - }, - { - "inputs": [], - "name": "NotInitializing", - "type": "error" - }, - { - "inputs": [], - "name": "UUPSUnauthorizedCallContext", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "slot", - "type": "bytes32" - } - ], - "name": "UUPSUnsupportedProxiableUUID", - "type": "error" - }, - { - "anonymous": false, - "inputs": [], - "name": "EIP712DomainChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint64", - "name": "version", - "type": "uint64" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "from_chain_id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "from_id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "from_sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "Send", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "inputs": [], - "name": "ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SENDER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "UPGRADE_INTERFACE_VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "UPGRADE_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "eip712Domain", - "outputs": [ - { - "internalType": "bytes1", - "name": "fields", - "type": "bytes1" - }, - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "version", - "type": "string" - }, - { - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "verifyingContract", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256[]", - "name": "extensions", - "type": "uint256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "proxiableUUID", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "callerConfirmation", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "from_chain_id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "from_id", - "type": "uint256" - }, - { - "internalType": "address", - "name": "from_sender", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "send", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "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": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516114dc61003e60003960008181610a4e01528181610a770152610c1901526114dc6000f3fe6080604052600436106100f35760003560e01c806384b0196e1161008a578063b908afa811610059578063b908afa814610335578063c42ef38c14610369578063d547741f1461039d578063e09ee870146103bd57600080fd5b806384b0196e1461023d57806391d1485414610265578063a217fddf146102ca578063ad3cb1cc146102df57600080fd5b80634f1ef286116100c65780634f1ef286146101cc57806352d1902d146101df57806375b238fc146101f45780638129fc1c1461022857600080fd5b806301ffc9a7146100f8578063248a9ca31461012d5780632f2ff15d1461018a57806336568abe146101ac575b600080fd5b34801561010457600080fd5b506101186101133660046110c6565b6103dd565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061017c610148366004611108565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610124565b34801561019657600080fd5b506101aa6101a536600461113d565b610476565b005b3480156101b857600080fd5b506101aa6101c736600461113d565b6104c0565b6101aa6101da36600461117f565b610511565b3480156101eb57600080fd5b5061017c610530565b34801561020057600080fd5b5061017c7f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde81565b34801561023457600080fd5b506101aa61055f565b34801561024957600080fd5b50610252610704565b6040516101249796959493929190611291565b34801561027157600080fd5b5061011861028036600461113d565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156102d657600080fd5b5061017c600081565b3480156102eb57600080fd5b506103286040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101249190611343565b34801561034157600080fd5b5061017c7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f981565b34801561037557600080fd5b5061017c7f1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f81565b3480156103a957600080fd5b506101aa6103b836600461113d565b610805565b3480156103c957600080fd5b506101186103d8366004611356565b610849565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061047057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546104b0816108c1565b6104ba83836108ce565b50505050565b6001600160a01b0381163314610502576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050c828261099d565b505050565b610519610a43565b61052282610afc565b61052c8282610b26565b5050565b600061053a610c0e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156105aa5750825b905060008267ffffffffffffffff1660011480156105c75750303b155b9050811580156105d5575080155b1561060c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561064057845468ff00000000000000001916680100000000000000001785555b610648610c57565b610650610c57565b61065b6000336108ce565b506106867f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde336108ce565b506106b17fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f9336108ce565b5083156106fd57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100805490915015801561074357506001810154155b6107ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064015b60405180910390fd5b6107b6610c5f565b6107be610d34565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461083f816108c1565b6104ba838361099d565b60007f1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f610875816108c1565b7f5ec4b4254fe4f840b0f2ee94ee4e2d3b44b52badb9327a5b8baa90e75cc8395d87878787876040516108ac9594939291906113ea565b60405180910390a15060019695505050505050565b6108cb8133610d85565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16610993576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556109493390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610470565b6000915050610470565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615610993576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610470565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610adc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ad07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610afa5760405163703e46dd60e11b815260040160405180910390fd5b565b7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f961052c816108c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b80575060408051601f3d908101601f19168201909252610b7d91810190611437565b60015b610ba857604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107a5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610c04576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016107a5565b61050c8383610e12565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afa5760405163703e46dd60e11b815260040160405180910390fd5b610afa610e68565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610cb090611450565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdc90611450565b8015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610cb090611450565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661052c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016107a5565b610e1b82610ecf565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e605761050c8282610f5e565b61052c610fd4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610afa576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b03163b600003610f0557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107a5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610f7b919061148a565b600060405180830381855af49150503d8060008114610fb6576040519150601f19603f3d011682016040523d82523d6000602084013e610fbb565b606091505b5091509150610fcb85838361100c565b95945050505050565b3415610afa576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826110215761101c82611084565b61107d565b815115801561103857506001600160a01b0384163b155b1561107a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016107a5565b50805b9392505050565b8051156110945780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461107d57600080fd5b60006020828403121561111a57600080fd5b5035919050565b80356001600160a01b038116811461113857600080fd5b919050565b6000806040838503121561115057600080fd5b8235915061116060208401611121565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561119257600080fd5b61119b83611121565b9150602083013567ffffffffffffffff808211156111b857600080fd5b818501915085601f8301126111cc57600080fd5b8135818111156111de576111de611169565b604051601f8201601f19908116603f0116810190838211818310171561120657611206611169565b8160405282815288602084870101111561121f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561125c578181015183820152602001611244565b50506000910152565b6000815180845261127d816020860160208601611241565b601f01601f19169290920160200192915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526112cd60e084018a611265565b83810360408501526112df818a611265565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561133157835183529284019291840191600101611315565b50909c9b505050505050505050505050565b60208152600061107d6020830184611265565b60008060008060006080868803121561136e57600080fd5b853594506020860135935061138560408701611121565b9250606086013567ffffffffffffffff808211156113a257600080fd5b818801915088601f8301126113b657600080fd5b8135818111156113c557600080fd5b8960208285010111156113d757600080fd5b9699959850939650602001949392505050565b8581528460208201526001600160a01b038416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561144957600080fd5b5051919050565b600181811c9082168061146457607f821691505b60208210810361148457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161149c818460208701611241565b919091019291505056fea264697066735822122014b9ca837310f9586a089b114c19232df03a7f4c1393211e5a6d766f368ebdf364736f6c63430008140033", - "deployedBytecode": "0x6080604052600436106100f35760003560e01c806384b0196e1161008a578063b908afa811610059578063b908afa814610335578063c42ef38c14610369578063d547741f1461039d578063e09ee870146103bd57600080fd5b806384b0196e1461023d57806391d1485414610265578063a217fddf146102ca578063ad3cb1cc146102df57600080fd5b80634f1ef286116100c65780634f1ef286146101cc57806352d1902d146101df57806375b238fc146101f45780638129fc1c1461022857600080fd5b806301ffc9a7146100f8578063248a9ca31461012d5780632f2ff15d1461018a57806336568abe146101ac575b600080fd5b34801561010457600080fd5b506101186101133660046110c6565b6103dd565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b5061017c610148366004611108565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610124565b34801561019657600080fd5b506101aa6101a536600461113d565b610476565b005b3480156101b857600080fd5b506101aa6101c736600461113d565b6104c0565b6101aa6101da36600461117f565b610511565b3480156101eb57600080fd5b5061017c610530565b34801561020057600080fd5b5061017c7f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde81565b34801561023457600080fd5b506101aa61055f565b34801561024957600080fd5b50610252610704565b6040516101249796959493929190611291565b34801561027157600080fd5b5061011861028036600461113d565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156102d657600080fd5b5061017c600081565b3480156102eb57600080fd5b506103286040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101249190611343565b34801561034157600080fd5b5061017c7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f981565b34801561037557600080fd5b5061017c7f1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f81565b3480156103a957600080fd5b506101aa6103b836600461113d565b610805565b3480156103c957600080fd5b506101186103d8366004611356565b610849565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061047057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680060205260409020600101546104b0816108c1565b6104ba83836108ce565b50505050565b6001600160a01b0381163314610502576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050c828261099d565b505050565b610519610a43565b61052282610afc565b61052c8282610b26565b5050565b600061053a610c0e565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156105aa5750825b905060008267ffffffffffffffff1660011480156105c75750303b155b9050811580156105d5575080155b1561060c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561064057845468ff00000000000000001916680100000000000000001785555b610648610c57565b610650610c57565b61065b6000336108ce565b506106867f589d473ba17c0f47d494622893831497bad25919b9afb8e33e9521b8963fccde336108ce565b506106b17fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f9336108ce565b5083156106fd57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100805490915015801561074357506001810154155b6107ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a6564000000000000000000000060448201526064015b60405180910390fd5b6107b6610c5f565b6107be610d34565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461083f816108c1565b6104ba838361099d565b60007f1854debf63b284c3f1dda5521be910ea59783c0dff877e7649f790d06729a12f610875816108c1565b7f5ec4b4254fe4f840b0f2ee94ee4e2d3b44b52badb9327a5b8baa90e75cc8395d87878787876040516108ac9594939291906113ea565b60405180910390a15060019695505050505050565b6108cb8133610d85565b50565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16610993576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556109493390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610470565b6000915050610470565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615610993576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610470565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610adc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ad07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15610afa5760405163703e46dd60e11b815260040160405180910390fd5b565b7fcab03bc4dbcc648cd59d6bbe9f848d1e9092f914016aa290ee92e18700d1e6f961052c816108c1565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b80575060408051601f3d908101601f19168201909252610b7d91810190611437565b60015b610ba857604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107a5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114610c04576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016107a5565b61050c8383610e12565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afa5760405163703e46dd60e11b815260040160405180910390fd5b610afa610e68565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610cb090611450565b80601f0160208091040260200160405190810160405280929190818152602001828054610cdc90611450565b8015610d295780601f10610cfe57610100808354040283529160200191610d29565b820191906000526020600020905b815481529060010190602001808311610d0c57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10091610cb090611450565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff1661052c576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016107a5565b610e1b82610ecf565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e605761050c8282610f5e565b61052c610fd4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610afa576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600160a01b03163b600003610f0557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107a5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610f7b919061148a565b600060405180830381855af49150503d8060008114610fb6576040519150601f19603f3d011682016040523d82523d6000602084013e610fbb565b606091505b5091509150610fcb85838361100c565b95945050505050565b3415610afa576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826110215761101c82611084565b61107d565b815115801561103857506001600160a01b0384163b155b1561107a576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016107a5565b50805b9392505050565b8051156110945780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602082840312156110d857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461107d57600080fd5b60006020828403121561111a57600080fd5b5035919050565b80356001600160a01b038116811461113857600080fd5b919050565b6000806040838503121561115057600080fd5b8235915061116060208401611121565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561119257600080fd5b61119b83611121565b9150602083013567ffffffffffffffff808211156111b857600080fd5b818501915085601f8301126111cc57600080fd5b8135818111156111de576111de611169565b604051601f8201601f19908116603f0116810190838211818310171561120657611206611169565b8160405282815288602084870101111561121f57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561125c578181015183820152602001611244565b50506000910152565b6000815180845261127d816020860160208601611241565b601f01601f19169290920160200192915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0818401526112cd60e084018a611265565b83810360408501526112df818a611265565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561133157835183529284019291840191600101611315565b50909c9b505050505050505050505050565b60208152600061107d6020830184611265565b60008060008060006080868803121561136e57600080fd5b853594506020860135935061138560408701611121565b9250606086013567ffffffffffffffff808211156113a257600080fd5b818801915088601f8301126113b657600080fd5b8135818111156113c557600080fd5b8960208285010111156113d757600080fd5b9699959850939650602001949392505050565b8581528460208201526001600160a01b038416604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561144957600080fd5b5051919050565b600181811c9082168061146457607f821691505b60208210810361148457634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161149c818460208701611241565b919091019291505056fea264697066735822122014b9ca837310f9586a089b114c19232df03a7f4c1393211e5a6d766f368ebdf364736f6c63430008140033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/artifacts/contracts/business/BusinessContractExample.sol/IBusinessContract.dbg.json b/contracts/artifacts/contracts/business/BusinessContractExample.sol/IBusinessContract.dbg.json deleted file mode 100644 index 49653469..00000000 --- a/contracts/artifacts/contracts/business/BusinessContractExample.sol/IBusinessContract.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/abe90607c0f29f9069da9533b2d74eec.json" -} diff --git a/contracts/artifacts/contracts/business/BusinessContractExample.sol/IBusinessContract.json b/contracts/artifacts/contracts/business/BusinessContractExample.sol/IBusinessContract.json deleted file mode 100644 index 52133c4a..00000000 --- a/contracts/artifacts/contracts/business/BusinessContractExample.sol/IBusinessContract.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IBusinessContract", - "sourceName": "contracts/business/BusinessContractExample.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "from_chain_id", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "from_id", - "type": "uint256" - }, - { - "internalType": "address", - "name": "from_sender", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "send", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/contracts/cache/solidity-files-cache.json b/contracts/cache/solidity-files-cache.json index 1b1d182a..e35bf23a 100644 --- a/contracts/cache/solidity-files-cache.json +++ b/contracts/cache/solidity-files-cache.json @@ -1,10 +1,10 @@ { "_format": "hh-sol-cache-2", "files": { - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { - "lastModificationDate": 1721619410502, - "contentHash": "61a6b098d98b3b945beb7d9de481c025", - "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/business/example/BusinessContractExample.sol": { + "lastModificationDate": 1727565914587, + "contentHash": "a06f9fca36c78543e58f14b62f94a097", + "sourceName": "contracts/business/example/BusinessContractExample.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -31,22 +31,23 @@ } }, "imports": [ - "@openzeppelin/contracts/access/IAccessControl.sol", - "../utils/ContextUpgradeable.sol", - "../utils/introspection/ERC165Upgradeable.sol", - "../proxy/utils/Initializable.sol" + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "AccessControlUpgradeable" + "BusinessContractExample", + "IBusinessContract" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol": { - "lastModificationDate": 1721619410503, - "contentHash": "184b684b7ed971771381712181df4367", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "lastModificationDate": 1727232135596, + "contentHash": "61a6b098d98b3b945beb7d9de481c025", + "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -73,21 +74,22 @@ } }, "imports": [ - "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol", - "@openzeppelin/contracts/interfaces/IERC5267.sol", - "../../proxy/utils/Initializable.sol" + "@openzeppelin/contracts/access/IAccessControl.sol", + "../utils/ContextUpgradeable.sol", + "../utils/introspection/ERC165Upgradeable.sol", + "../proxy/utils/Initializable.sol" ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "EIP712Upgradeable" + "AccessControlUpgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { - "lastModificationDate": 1721619410513, - "contentHash": "b96e0d7a3c2b185342c7d083d765b61f", - "sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "lastModificationDate": 1727232135857, + "contentHash": "f0cedd674b4863ee90d1521a92ab82df", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -118,13 +120,13 @@ "^0.8.20" ], "artifacts": [ - "ECDSA" + "Initializable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { - "lastModificationDate": 1721619410515, - "contentHash": "f0cedd674b4863ee90d1521a92ab82df", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "lastModificationDate": 1727232135876, + "contentHash": "0488cb927068c0c94b864ea40a34d1ea", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -150,18 +152,22 @@ } } }, - "imports": [], + "imports": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "./Initializable.sol" + ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "Initializable" + "UUPSUpgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { - "lastModificationDate": 1721619410516, - "contentHash": "0488cb927068c0c94b864ea40a34d1ea", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol": { + "lastModificationDate": 1727232135618, + "contentHash": "184b684b7ed971771381712181df4367", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -188,19 +194,19 @@ } }, "imports": [ - "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", - "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", - "./Initializable.sol" + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol", + "@openzeppelin/contracts/interfaces/IERC5267.sol", + "../../proxy/utils/Initializable.sol" ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "UUPSUpgradeable" + "EIP712Upgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { - "lastModificationDate": 1721619410503, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "lastModificationDate": 1727232135613, "contentHash": "c28aaa25d083a9a55bd9ec9e0b785122", "sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", "solcConfig": { @@ -238,8 +244,8 @@ "ContextUpgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { - "lastModificationDate": 1721619410505, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "lastModificationDate": 1727232135679, "contentHash": "ea9d297971734d541e82cc31ec88b84f", "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", "solcConfig": { @@ -278,8 +284,8 @@ "ERC165Upgradeable" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/access/IAccessControl.sol": { - "lastModificationDate": 1721619410523, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/access/IAccessControl.sol": { + "lastModificationDate": 1727232135965, "contentHash": "e3a14b0714caaaa82d58fa0bc3756079", "sourceName": "@openzeppelin/contracts/access/IAccessControl.sol", "solcConfig": { @@ -315,8 +321,8 @@ "IAccessControl" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { - "lastModificationDate": 1721619410525, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "lastModificationDate": 1727232135992, "contentHash": "de0163561b417b800d01749cbbe2147e", "sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol", "solcConfig": { @@ -352,10 +358,47 @@ "IERC165" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": { - "lastModificationDate": 1721619410531, - "contentHash": "9e5eec59eaffa554d6cca561dcb914eb", - "sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "lastModificationDate": 1727232135846, + "contentHash": "5a6f0412127636d802db818a7d6ac404", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC1822Proxiable" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "lastModificationDate": 1727232135893, + "contentHash": "838bc3ef3bcf0376af7d9b2041989b6a", + "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -382,17 +425,130 @@ } }, "imports": [ - "../Strings.sol" + "../beacon/IBeacon.sol", + "../../utils/Address.sol", + "../../utils/StorageSlot.sol" ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "MessageHashUtils" + "ERC1967Utils" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Address.sol": { + "lastModificationDate": 1727232135811, + "contentHash": "79c699f80eb8a9b168cb34e37816f894", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "Address" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { + "lastModificationDate": 1727232136046, + "contentHash": "08cbccfefa284405c12b4bfa8c8c9c2b", + "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "StorageSlot" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": { - "lastModificationDate": 1721619410527, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "lastModificationDate": 1727232135974, + "contentHash": "0a5c323fd908535580597848b8e550fb", + "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IBeacon" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": { + "lastModificationDate": 1727232136007, "contentHash": "94364524cb1a39dcbc3d3afff6d8e53e", "sourceName": "@openzeppelin/contracts/interfaces/IERC5267.sol", "solcConfig": { @@ -428,8 +584,47 @@ "IERC5267" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/utils/Strings.sol": { - "lastModificationDate": 1721619410533, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": { + "lastModificationDate": 1727232136032, + "contentHash": "9e5eec59eaffa554d6cca561dcb914eb", + "sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../Strings.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "MessageHashUtils" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Strings.sol": { + "lastModificationDate": 1727232136047, "contentHash": "ba57ff4ddf1d9cae9d2009792795b7f6", "sourceName": "@openzeppelin/contracts/utils/Strings.sol", "solcConfig": { @@ -468,8 +663,8 @@ "Strings" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/utils/math/Math.sol": { - "lastModificationDate": 1721619410530, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "lastModificationDate": 1727232136028, "contentHash": "718fa8ba0ff269c92e364c1429d9de57", "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", "solcConfig": { @@ -505,8 +700,8 @@ "Math" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { - "lastModificationDate": 1721619410533, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { + "lastModificationDate": 1727232136046, "contentHash": "b6c6bdc7aaca4fe5b680760a72e09d3e", "sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol", "solcConfig": { @@ -542,10 +737,10 @@ "SignedMath" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { - "lastModificationDate": 1721619410517, - "contentHash": "838bc3ef3bcf0376af7d9b2041989b6a", - "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { + "lastModificationDate": 1727232135886, + "contentHash": "6a55c353946e471d9792965d06208295", + "sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -572,21 +767,60 @@ } }, "imports": [ - "../beacon/IBeacon.sol", - "../../utils/Address.sol", - "../../utils/StorageSlot.sol" + "./IERC165.sol" ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "ERC1967Utils" + "ERC165" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { - "lastModificationDate": 1721619410513, - "contentHash": "5a6f0412127636d802db818a7d6ac404", - "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/access/AccessControl.sol": { + "lastModificationDate": 1727232135786, + "contentHash": "4c80b7fdf559a9a348e832a57d072a0b", + "sourceName": "@openzeppelin/contracts/access/AccessControl.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IAccessControl.sol", + "../utils/Context.sol", + "../utils/introspection/ERC165.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "AccessControl" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/Context.sol": { + "lastModificationDate": 1727232135838, + "contentHash": "67bfbc07588eb8683b3fd8f6f909563e", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -617,13 +851,58 @@ "^0.8.20" ], "artifacts": [ - "IERC1822Proxiable" + "Context" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/utils/Address.sol": { - "lastModificationDate": 1721619410509, - "contentHash": "79c699f80eb8a9b168cb34e37816f894", - "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/message/MessageSharing.sol": { + "lastModificationDate": 1727580611043, + "contentHash": "8e99d74ada1a3fa28cf9d10cfe2c8ad6", + "sourceName": "contracts/message/MessageSharing.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "B2MessageSharing", + "IB2MessageSharing", + "IBusinessContract" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "lastModificationDate": 1727232135852, + "contentHash": "b96e0d7a3c2b185342c7d083d765b61f", + "sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -654,13 +933,54 @@ "^0.8.20" ], "artifacts": [ - "Address" + "ECDSA" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { - "lastModificationDate": 1721619410533, - "contentHash": "08cbccfefa284405c12b4bfa8c8c9c2b", - "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "lastModificationDate": 1727232136044, + "contentHash": "697fd27924863e77c17dace2179018b2", + "sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC20.sol", + "../extensions/IERC20Permit.sol", + "../../../utils/Address.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "SafeERC20" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "lastModificationDate": 1727232135997, + "contentHash": "5517c8678c18eb1a8ba58810e7ca39ca", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -691,13 +1011,13 @@ "^0.8.20" ], "artifacts": [ - "StorageSlot" + "IERC20" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { - "lastModificationDate": 1721619410524, - "contentHash": "0a5c323fd908535580597848b8e550fb", - "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "lastModificationDate": 1727232136000, + "contentHash": "da291753fa4641f2c5837bfc4aa4c01b", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -728,13 +1048,13 @@ "^0.8.20" ], "artifacts": [ - "IBeacon" + "IERC20Permit" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/contracts/business/BusinessContractExample.sol": { - "lastModificationDate": 1721898040459, - "contentHash": "a06f9fca36c78543e58f14b62f94a097", - "sourceName": "contracts/business/BusinessContractExample.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "lastModificationDate": 1727232135999, + "contentHash": "4c02fa6f7ae7b6c289cef80424f0c875", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -761,23 +1081,140 @@ } }, "imports": [ - "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol" + "../IERC20.sol" ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "BusinessContractExample", - "IBusinessContract" + "IERC20Metadata" ] }, - "/Users/m/Workspaces/b2-network/b2-message-channel/contracts/contracts/message/MessageBridge.sol": { - "lastModificationDate": 1727274581576, - "contentHash": "8f09af7097efb94482726be1b31b3826", - "sourceName": "contracts/message/MessageBridge.sol", + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "lastModificationDate": 1727232135900, + "contentHash": "c6375ef25e84c90b3d15f9ec4eef218f", + "sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./IERC20.sol", + "./extensions/IERC20Metadata.sol", + "../../utils/Context.sol", + "../../interfaces/draft-IERC6093.sol" + ], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "ERC20" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "lastModificationDate": 1727232135848, + "contentHash": "4aefc698f77ecbace7f401257dfe182d", + "sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.20" + ], + "artifacts": [ + "IERC1155Errors", + "IERC20Errors", + "IERC721Errors" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/business/tokenLocker/MyERC20.sol": { + "lastModificationDate": 1727565994263, + "contentHash": "6eb80143fbc67b6a79f1da8ff8e56384", + "sourceName": "contracts/business/tokenLocker/MyERC20.sol", + "solcConfig": { + "version": "0.8.20", + "settings": { + "optimizer": { + "enabled": true, + "runs": 1000 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "@openzeppelin/contracts/access/AccessControl.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "MyERC20" + ] + }, + "/Users/m/Workspaces/b2-network/b2-message-sharing/contracts/contracts/business/tokenLocker/Lock.sol": { + "lastModificationDate": 1727572796847, + "contentHash": "f34a857c9a2b8bbb2ce640f4e247025f", + "sourceName": "contracts/business/tokenLocker/Lock.sol", "solcConfig": { "version": "0.8.20", "settings": { @@ -808,15 +1245,15 @@ "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol", - "@openzeppelin/contracts/utils/cryptography/ECDSA.sol" + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol" ], "versionPragmas": [ "^0.8.20" ], "artifacts": [ - "B2MessageBridge", - "IB2MessageBridge", - "IBusinessContract" + "IB2MessageSharing", + "IBusinessContract", + "TokenLockerContract" ] } } diff --git a/contracts/cache/validations.json b/contracts/cache/validations.json index 63e25466..2930519e 100644 --- a/contracts/cache/validations.json +++ b/contracts/cache/validations.json @@ -826,6 +826,6574 @@ }, "solcVersion": "0.8.20" }, + "contracts/message/MessageSharing.sol:B2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:98", + "version": { + "withMetadata": "39663f0c2891fe6729954e3ee20ef4663d7d5e82508e7835ceca4d3e15b1210c", + "withoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874", + "linkedWithoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/message/MessageSharing.sol:IB2MessageSharing" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA" + ], + "methods": [ + "initialize()", + "validatorRole(uint256)", + "setWeight(uint256,uint256)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "call(uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "sequences", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:105" + }, + { + "label": "ids", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:106" + }, + { + "label": "weights", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:107" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IB2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "validatorRole(uint256)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "setWeight(uint256,uint256)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IBusinessContract": { + "src": "contracts/message/MessageSharing.sol:86", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl": { + "src": "@openzeppelin/contracts/access/AccessControl.sol:49", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(RoleData)1250_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC1155Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:113", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:9", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:55", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20": { + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:34", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:50" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:11", + "inherit": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Context.sol:Context": { + "src": "@openzeppelin/contracts/utils/Context.sol:16", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA": { + "src": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:12", + "version": { + "withMetadata": "331614b026900e8360111160b80a2ee56153ca66bb73d4aaf42d987a68a589f5", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165": { + "src": "@openzeppelin/contracts/utils/introspection/ERC165.sol:20", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:BusinessContractExample": { + "src": "contracts/business/example/BusinessContractExample.sol:13", + "version": { + "withMetadata": "cea372427f8b977ec7bbba29771a59988baa026a2dbc30a66fc5a119d6db81ff", + "withoutMetadata": "396285db24b331f7d99925ef8cb699199c338aa352bcc21caa1d22ba335f82df", + "linkedWithoutMetadata": "396285db24b331f7d99925ef8cb699199c338aa352bcc21caa1d22ba335f82df" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/business/example/BusinessContractExample.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:IBusinessContract": { + "src": "contracts/business/example/BusinessContractExample.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:IB2MessageSharing": { + "src": "contracts/business/tokenLocker/Lock.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:IBusinessContract": { + "src": "contracts/business/tokenLocker/Lock.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:TokenLockerContract": { + "src": "contracts/business/tokenLocker/Lock.sol:20", + "version": { + "withMetadata": "cac6bb4a3cb853be3c9fd25056834dd9eba96d481175a58a741ba8750758fed1", + "withoutMetadata": "d179fc41cbfeb6bb1588d9f1680f49db83eee470e3681adf0eb31a2a99239f7c", + "linkedWithoutMetadata": "d179fc41cbfeb6bb1588d9f1680f49db83eee470e3681adf0eb31a2a99239f7c" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/business/tokenLocker/Lock.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "initialize()", + "setB2MessageSharing(address)", + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)5444", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:28" + }, + { + "label": "locks", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:50" + }, + { + "label": "ids", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:51" + }, + { + "label": "tokens", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:52" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)5444": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/MyERC20.sol:MyERC20": { + "src": "contracts/business/tokenLocker/MyERC20.sol:7", + "version": { + "withMetadata": "1d8c2234e4486aa94447b19be93d4a96eeaf4e61cc11f4144382ae5cd9990b17", + "withoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae", + "linkedWithoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae" + }, + "inherit": [ + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl", + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "(string,string,uint8)", + "decimals()", + "mint(address,uint256)", + "burn(address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "MyERC20", + "src": "contracts/business/tokenLocker/MyERC20.sol:12" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + }, + { + "label": "_roles", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "6", + "type": "t_uint8", + "contract": "MyERC20", + "src": "contracts/business/tokenLocker/MyERC20.sol:10" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(RoleData)1250_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:B2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:98", + "version": { + "withMetadata": "c8dea9f8c64074b8d0589137d1fffcf089df7cc4ad869017a428553605adb608", + "withoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874", + "linkedWithoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/message/MessageSharing.sol:IB2MessageSharing" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA" + ], + "methods": [ + "initialize()", + "validatorRole(uint256)", + "setWeight(uint256,uint256)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "call(uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "sequences", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:105" + }, + { + "label": "ids", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:106" + }, + { + "label": "weights", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:107" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IB2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "validatorRole(uint256)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "setWeight(uint256,uint256)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IBusinessContract": { + "src": "contracts/message/MessageSharing.sol:86", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA": { + "src": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:12", + "version": { + "withMetadata": "331614b026900e8360111160b80a2ee56153ca66bb73d4aaf42d987a68a589f5", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:B2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:98", + "version": { + "withMetadata": "c8dea9f8c64074b8d0589137d1fffcf089df7cc4ad869017a428553605adb608", + "withoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874", + "linkedWithoutMetadata": "2a51f7c639b533e6366aad722553038c67a96c0b121f700493a12a1d3e45e874" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/message/MessageSharing.sol:IB2MessageSharing" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA" + ], + "methods": [ + "initialize()", + "validatorRole(uint256)", + "setWeight(uint256,uint256)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "call(uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "sequences", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:105" + }, + { + "label": "ids", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:106" + }, + { + "label": "weights", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:107" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IB2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "validatorRole(uint256)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "setWeight(uint256,uint256)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IBusinessContract": { + "src": "contracts/message/MessageSharing.sol:86", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl": { + "src": "@openzeppelin/contracts/access/AccessControl.sol:49", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "_roles", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(RoleData)1250_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC1155Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:113", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:9", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC721Errors": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:55", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20": { + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:34", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()", + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:50" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20": { + "src": "@openzeppelin/contracts/token/ERC20/IERC20.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "totalSupply()", + "balanceOf(address)", + "transfer(address,uint256)", + "allowance(address,address)", + "approve(address,uint256)", + "transferFrom(address,address,uint256)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:11", + "inherit": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20" + ], + "libraries": [], + "methods": [ + "name()", + "symbol()", + "decimals()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:IERC20Permit": { + "src": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol:42", + "inherit": [], + "libraries": [], + "methods": [ + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)", + "nonces(address)", + "DOMAIN_SEPARATOR()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20": { + "src": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:19", + "version": { + "withMetadata": "43be31e1b7b09dd333d742d67f8c36495238ee6121d2c703f5ae412fad6ffd01", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Context.sol:Context": { + "src": "@openzeppelin/contracts/utils/Context.sol:16", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA": { + "src": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:12", + "version": { + "withMetadata": "331614b026900e8360111160b80a2ee56153ca66bb73d4aaf42d987a68a589f5", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165": { + "src": "@openzeppelin/contracts/utils/introspection/ERC165.sol:20", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:BusinessContractExample": { + "src": "contracts/business/example/BusinessContractExample.sol:13", + "version": { + "withMetadata": "cea372427f8b977ec7bbba29771a59988baa026a2dbc30a66fc5a119d6db81ff", + "withoutMetadata": "396285db24b331f7d99925ef8cb699199c338aa352bcc21caa1d22ba335f82df", + "linkedWithoutMetadata": "396285db24b331f7d99925ef8cb699199c338aa352bcc21caa1d22ba335f82df" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/business/example/BusinessContractExample.sol:IBusinessContract" + ], + "libraries": [], + "methods": [ + "initialize()", + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/business/example/BusinessContractExample.sol:IBusinessContract": { + "src": "contracts/business/example/BusinessContractExample.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:IB2MessageSharing": { + "src": "contracts/business/tokenLocker/Lock.sol:11", + "inherit": [], + "libraries": [], + "methods": [ + "call(uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:IBusinessContract": { + "src": "contracts/business/tokenLocker/Lock.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/Lock.sol:TokenLockerContract": { + "src": "contracts/business/tokenLocker/Lock.sol:20", + "version": { + "withMetadata": "cac6bb4a3cb853be3c9fd25056834dd9eba96d481175a58a741ba8750758fed1", + "withoutMetadata": "d179fc41cbfeb6bb1588d9f1680f49db83eee470e3681adf0eb31a2a99239f7c", + "linkedWithoutMetadata": "d179fc41cbfeb6bb1588d9f1680f49db83eee470e3681adf0eb31a2a99239f7c" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/business/tokenLocker/Lock.sol:IBusinessContract" + ], + "libraries": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:SafeERC20" + ], + "methods": [ + "initialize()", + "setB2MessageSharing(address)", + "send(uint256,uint256,address,bytes)", + "lock(address,uint256,uint256,address,address)", + "encodeLockData(address,address,address,uint256)", + "decodeLockData(bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "messageSharing", + "offset": 0, + "slot": "0", + "type": "t_contract(IB2MessageSharing)5444", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:28" + }, + { + "label": "locks", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_address)", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:50" + }, + { + "label": "ids", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:51" + }, + { + "label": "tokens", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_uint256,t_mapping(t_address,t_address))", + "contract": "TokenLockerContract", + "src": "contracts/business/tokenLocker/Lock.sol:52" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_contract(IB2MessageSharing)5444": { + "label": "contract IB2MessageSharing", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_address)": { + "label": "mapping(address => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_address)": { + "label": "mapping(uint256 => address)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_address,t_address))": { + "label": "mapping(uint256 => mapping(address => address))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/business/tokenLocker/MyERC20.sol:MyERC20": { + "src": "contracts/business/tokenLocker/MyERC20.sol:7", + "version": { + "withMetadata": "1d8c2234e4486aa94447b19be93d4a96eeaf4e61cc11f4144382ae5cd9990b17", + "withoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae", + "linkedWithoutMetadata": "ba9466b246486d2f441df05e9c6487dc43ea26f434cda22d4258231528856fae" + }, + "inherit": [ + "@openzeppelin/contracts/access/AccessControl.sol:AccessControl", + "@openzeppelin/contracts/utils/introspection/ERC165.sol:ERC165", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol:IERC20Errors", + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol:IERC20Metadata", + "@openzeppelin/contracts/token/ERC20/IERC20.sol:IERC20", + "@openzeppelin/contracts/utils/Context.sol:Context" + ], + "libraries": [], + "methods": [ + "(string,string,uint8)", + "decimals()", + "mint(address,uint256)", + "burn(address,uint256)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "constructor", + "contract": "MyERC20", + "src": "contracts/business/tokenLocker/MyERC20.sol:12" + } + ], + "layout": { + "storage": [ + { + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:35" + }, + { + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:37" + }, + { + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:39" + }, + { + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:41" + }, + { + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage", + "contract": "ERC20", + "src": "@openzeppelin/contracts/token/ERC20/ERC20.sol:42" + }, + { + "label": "_roles", + "offset": 0, + "slot": "5", + "type": "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)", + "contract": "AccessControl", + "src": "@openzeppelin/contracts/access/AccessControl.sol:55" + }, + { + "label": "_decimals", + "offset": 0, + "slot": "6", + "type": "t_uint8", + "contract": "MyERC20", + "src": "contracts/business/tokenLocker/MyERC20.sol:10" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_uint256)": { + "label": "mapping(address => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)1250_storage)": { + "label": "mapping(bytes32 => struct AccessControl.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(RoleData)1250_storage": { + "label": "struct AccessControl.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:B2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:98", + "version": { + "withMetadata": "4c4905bc482dbfa726a93334b837406529b7f60f4301e6f892f0af54044b1791", + "withoutMetadata": "30a855e5b133d867264f2ceb576b90022dde1b8aa6c5423b9b97ee553c8cb75f", + "linkedWithoutMetadata": "30a855e5b133d867264f2ceb576b90022dde1b8aa6c5423b9b97ee553c8cb75f" + }, + "inherit": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable", + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable", + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable", + "contracts/message/MessageSharing.sol:IB2MessageSharing" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA" + ], + "methods": [ + "initialize()", + "validatorRole(uint256)", + "setWeight(uint256,uint256)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "call(uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [ + { + "label": "sequences", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:105" + }, + { + "label": "ids", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:106" + }, + { + "label": "weights", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_uint256)", + "contract": "B2MessageSharing", + "src": "contracts/message/MessageSharing.sol:107" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_mapping(t_uint256,t_bool)": { + "label": "mapping(uint256 => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_bool))": { + "label": "mapping(uint256 => mapping(uint256 => bool))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_uint256)": { + "label": "mapping(uint256 => uint256)", + "numberOfBytes": "32" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "layoutVersion": "1.2", + "flat": true, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IB2MessageSharing": { + "src": "contracts/message/MessageSharing.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "validatorRole(uint256)", + "SendHash(uint256,uint256,address,uint256,address,bytes)", + "verify(uint256,uint256,address,uint256,address,bytes,bytes)", + "setWeight(uint256,uint256)", + "call(uint256,address,bytes)", + "send(uint256,uint256,address,address,bytes,bytes[])", + "setValidatorRole(uint256,address,bool)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "contracts/message/MessageSharing.sol:IBusinessContract": { + "src": "contracts/message/MessageSharing.sol:86", + "inherit": [], + "libraries": [], + "methods": [ + "send(uint256,uint256,address,bytes)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + } + }, + { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:AccessControlUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:50", + "inherit": [ + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable", + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl", + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)", + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "label": "mapping(address => bool)", + "numberOfBytes": "32" + }, + "t_mapping(t_bytes32,t_struct(RoleData)25_storage)": { + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32" + }, + "t_struct(AccessControlStorage)35_storage": { + "label": "struct AccessControlUpgradeable.AccessControlStorage", + "members": [ + { + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(RoleData)25_storage": { + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "label": "hasRole", + "type": "t_mapping(t_address,t_bool)", + "offset": 0, + "slot": "0" + }, + { + "label": "adminRole", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + } + ], + "numberOfBytes": "64" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.AccessControl": [ + { + "contract": "AccessControlUpgradeable", + "label": "_roles", + "type": "t_mapping(t_bytes32,t_struct(RoleData)25_storage)", + "src": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol:61", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:56", + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:UUPSUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol:20", + "inherit": [ + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils" + ], + "methods": [ + "proxiableUUID()", + "upgradeToAndCall(address,bytes)" + ], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:ContextUpgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:17", + "inherit": [ + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:EIP712Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:32", + "inherit": [ + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [ + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils" + ], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(EIP712Storage)376_storage": { + "label": "struct EIP712Upgradeable.EIP712Storage", + "members": [ + { + "label": "_hashedName", + "type": "t_bytes32", + "offset": 0, + "slot": "0" + }, + { + "label": "_hashedVersion", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "_name", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "_version", + "type": "t_string_storage", + "offset": 0, + "slot": "3" + } + ], + "numberOfBytes": "128" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.EIP712": [ + { + "contract": "EIP712Upgradeable", + "label": "_hashedName", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:39", + "offset": 0, + "slot": "0" + }, + { + "contract": "EIP712Upgradeable", + "label": "_hashedVersion", + "type": "t_bytes32", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:41", + "offset": 0, + "slot": "1" + }, + { + "contract": "EIP712Upgradeable", + "label": "_name", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:43", + "offset": 0, + "slot": "2" + }, + { + "contract": "EIP712Upgradeable", + "label": "_version", + "type": "t_string_storage", + "src": "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol:44", + "offset": 0, + "slot": "3" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:ERC165Upgradeable": { + "src": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol:21", + "inherit": [ + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable" + ], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)174_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "layoutVersion": "1.2", + "flat": false, + "namespaces": { + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/access/IAccessControl.sol:IAccessControl": { + "src": "@openzeppelin/contracts/access/IAccessControl.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "hasRole(bytes32,address)", + "getRoleAdmin(bytes32)", + "grantRole(bytes32,address)", + "revokeRole(bytes32,address)", + "renounceRole(bytes32,address)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/IERC5267.sol:IERC5267": { + "src": "@openzeppelin/contracts/interfaces/IERC5267.sol:6", + "inherit": [], + "libraries": [], + "methods": [ + "eip712Domain()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:IERC1822Proxiable": { + "src": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol:10", + "inherit": [], + "libraries": [], + "methods": [ + "proxiableUUID()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:ERC1967Utils": { + "src": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol:14", + "version": { + "withMetadata": "da0ca15378c152c2e5da0d6bf0e27590374c4a5c250bc2a82167eedfe4c704bd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot", + "@openzeppelin/contracts/utils/Address.sol:Address" + ], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + }, + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:IBeacon": { + "src": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol:9", + "inherit": [], + "libraries": [], + "methods": [ + "implementation()" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Address.sol:Address": { + "src": "@openzeppelin/contracts/utils/Address.sol:9", + "version": { + "withMetadata": "87fe4495dfc9354a67a3f830c1c6ae271f7d13aa51b702039300545894a3ef6b", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [ + { + "kind": "delegatecall", + "src": "@openzeppelin/contracts/utils/Address.sol:105" + } + ], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol:StorageSlot": { + "src": "@openzeppelin/contracts/utils/StorageSlot.sol:31", + "version": { + "withMetadata": "7265f6e3db839ed1e12b293fcc2217f69e669b109fb6d18bebad36e761707f76", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/Strings.sol:Strings": { + "src": "@openzeppelin/contracts/utils/Strings.sol:12", + "version": { + "withMetadata": "1f077ab1d99a4eecbd37aee047bccfff460c6733303204c2caae630025da1b56", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/math/Math.sol:Math", + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:ECDSA": { + "src": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol:12", + "version": { + "withMetadata": "331614b026900e8360111160b80a2ee56153ca66bb73d4aaf42d987a68a589f5", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:MessageHashUtils": { + "src": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol:15", + "version": { + "withMetadata": "47db2b51fbc9919a71b07ceb1b01998df2a411f6e7e9090a303eca3b7fbe9697", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [ + "@openzeppelin/contracts/utils/Strings.sol:Strings" + ], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol:IERC165": { + "src": "@openzeppelin/contracts/utils/introspection/IERC165.sol:15", + "inherit": [], + "libraries": [], + "methods": [ + "supportsInterface(bytes4)" + ], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/Math.sol:Math": { + "src": "@openzeppelin/contracts/utils/math/Math.sol:9", + "version": { + "withMetadata": "5fc8cf4b465bec2619d552a3c06f7fbe2ab2174de540f304fb55b0e888f55edd", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol:SignedMath": { + "src": "@openzeppelin/contracts/utils/math/SignedMath.sol:9", + "version": { + "withMetadata": "12aecc6841d3169e665dbcd7653533b31894b634fefe854d71d51d046514f633", + "withoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db", + "linkedWithoutMetadata": "a64c6cf9c6ba9368f5132c93a0196b3204a7963dbb4dd05dfddb4ab23126b8db" + }, + "inherit": [], + "libraries": [], + "methods": [], + "linkReferences": [], + "errors": [], + "layout": { + "storage": [], + "types": {}, + "layoutVersion": "1.2", + "flat": false, + "namespaces": {} + }, + "solcVersion": "0.8.20" + }, "contracts/message/MessageBridge.sol:B2MessageBridge": { "src": "contracts/message/MessageBridge.sol:98", "version": { diff --git a/contracts/contracts/business/BusinessContractExample.sol b/contracts/contracts/business/example/BusinessContractExample.sol similarity index 100% rename from contracts/contracts/business/BusinessContractExample.sol rename to contracts/contracts/business/example/BusinessContractExample.sol diff --git a/contracts/contracts/business/tokenLocker/Lock.sol b/contracts/contracts/business/tokenLocker/Lock.sol new file mode 100644 index 00000000..9c0b1a3f --- /dev/null +++ b/contracts/contracts/business/tokenLocker/Lock.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + + +interface IB2MessageSharing { + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); +} + +interface IBusinessContract { + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success); +} + + +contract TokenLockerContract is IBusinessContract, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { + + using SafeERC20 for IERC20; + + bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); + bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); + bytes32 public constant SENDER_ROLE = keccak256("sender_role"); + + IB2MessageSharing public messageSharing; + + function initialize() public initializer { + __AccessControl_init(); + __UUPSUpgradeable_init(); + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(ADMIN_ROLE, msg.sender); + _grantRole(UPGRADE_ROLE, msg.sender); + } + + function _authorizeUpgrade(address newImplementation) + internal + onlyRole(UPGRADE_ROLE) + override + { + + } + + function setB2MessageSharing(address sharing_address) external onlyRole(ADMIN_ROLE) { + messageSharing = IB2MessageSharing(sharing_address); + } + + mapping (uint256 => address) public locks; + mapping (uint256 => mapping (uint256 => bool)) public ids; + mapping (uint256 => mapping (address => address)) public tokens; + + event Unlock(uint256 from_chain_id ,uint256 from_id, address from_address, address token_address, uint256 to_chain_id, address to_business_contract, address to_address, uint256 amount); + + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external onlyRole(SENDER_ROLE) override returns (bool success) { + require(locks[from_chain_id] == from_sender, "Invalid chain id or from_sender"); + require(!ids[from_chain_id][from_id], "Have been executed"); + (address from_token_address, address from_address, address to_address, uint256 amount) = decodeLockData(message); + + address token_address = tokens[from_chain_id][from_token_address]; + require(token_address != address(0x0), "Invalid token"); + + IERC20(token_address).transfer(to_address, amount); + emit Unlock(from_chain_id, from_id, from_address, token_address, block.chainid, address(this), to_address, amount); + return true; + } + + event Lock(uint256 from_chain_id ,uint256 from_id, address from_address, address token_address, uint256 to_chain_id, address to_business_contract, address to_address, uint256 amount); + + function lock(address token_address, uint256 amount, uint256 to_chain_id, address to_business_contract, address to_address) external { + IERC20(token_address).transferFrom(msg.sender, address(this), amount); + bytes memory to_message = encodeLockData(token_address, msg.sender, to_address, amount); + + uint256 from_id = messageSharing.call(to_chain_id, to_business_contract, to_message); + emit Lock(block.chainid ,from_id, msg.sender, token_address, to_chain_id, to_business_contract, to_address, amount); + } + + function encodeLockData(address token_address, address from_address, address to_address, uint256 amount) public pure returns (bytes memory) { + return abi.encode(token_address, from_address, to_address, amount); + } + + function decodeLockData(bytes memory data) public pure returns (address token_address, address from_address, address to_address, uint256 amount) { + (token_address, from_address, to_address, amount) = abi.decode(data, (address, address, address, uint256)); + } +} \ No newline at end of file diff --git a/contracts/contracts/business/tokenLocker/MyERC20.sol b/contracts/contracts/business/tokenLocker/MyERC20.sol new file mode 100644 index 00000000..0ab7bafe --- /dev/null +++ b/contracts/contracts/business/tokenLocker/MyERC20.sol @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts/access/AccessControl.sol"; + +contract MyERC20 is ERC20, AccessControl { + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); + bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE"); + uint8 public _decimals; + + constructor(string memory _name, string memory _symbol, uint8 decimals) ERC20(_name, _symbol) { + // Grant the contract deployer the default admin role: it will be able + // to grant and revoke any rolesx + _decimals = decimals; + _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); + _grantRole(MINTER_ROLE, msg.sender); + _grantRole(BURNER_ROLE, msg.sender); + } + + function decimals() public view virtual override returns (uint8) { + return _decimals; + } + + function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) { + _mint(to, amount); + } + + function burn(address from, uint256 amount) public onlyRole(BURNER_ROLE) { + _burn(from, amount); + } +} \ No newline at end of file diff --git a/contracts/contracts/message/MessageBridge.sol b/contracts/contracts/message/MessageSharing.sol similarity index 68% rename from contracts/contracts/message/MessageBridge.sol rename to contracts/contracts/message/MessageSharing.sol index 390e203a..e4cb2a90 100644 --- a/contracts/contracts/message/MessageBridge.sol +++ b/contracts/contracts/message/MessageSharing.sol @@ -7,7 +7,7 @@ import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol" import "@openzeppelin/contracts-upgradeable/utils/cryptography/EIP712Upgradeable.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -interface IB2MessageBridge { +interface IB2MessageSharing { /** * Get the validator role for a specific chain @@ -22,11 +22,11 @@ interface IB2MessageBridge { * @param from_id The ID of the cross-chain message, used to uniquely identify the message. * @param from_sender The address of the sender on the originating chain. * @param to_chain_id The ID of the target chain, where the message will be sent. - * @param contract_address The address of the target contract that will receive the cross-chain message. - * @param data The input data for the target contract's cross-chain call. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. * @return bytes32 The generated message hash, used for subsequent verification and processing. */ - function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes calldata data) external view returns (bytes32); + function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external view returns (bytes32); /** * Verify the legitimacy of a message @@ -34,12 +34,12 @@ interface IB2MessageBridge { * @param from_id The ID of the cross-chain message, used to check if the message has already been processed. * @param from_sender The address of the sender on the originating chain, used to verify the sender's legitimacy. * @param to_chain_id The ID of the target chain, indicating where the message will be sent. - * @param contract_address The address of the target contract that will receive the cross-chain message. - * @param data The input data for the target contract's cross-chain call. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. * @param signature The signature of the message, used to verify its legitimacy and integrity. * @return bool Returns true if the verification succeeds, and false if it fails. */ - function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes calldata data, bytes calldata signature) external view returns (bool); + function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message, bytes calldata signature) external view returns (bool); /** * Set the weight for message processing @@ -51,22 +51,22 @@ interface IB2MessageBridge { /** * Request cross-chain message data * @param to_chain_id The ID of the target chain, specifying where the message will be sent. - * @param contract_address The address of the target contract that will receive the cross-chain message. - * @param data The input data for the target contract's cross-chain call. + * @param to_business_contract The address of the target contract that will receive the cross-chain message. + * @param to_message The input data for the target contract's cross-chain call. * @return from_id The ID of the cross-chain message, returning a unique identifier to track the request. */ - function call(uint256 to_chain_id, address contract_address, bytes calldata data) external returns (uint256 from_id); + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external returns (uint256 from_id); /** * Confirm cross-chain message data * @param from_chain_id The ID of the originating chain, used to validate the source of the message. * @param from_id The ID of the cross-chain message, used to check if the message has already been processed. * @param from_sender The address of the sender on the originating chain (msg.sender), used to determine the sender's security based on business needs. - * @param contract_address The address of the target contract, indicating where the message will be sent (can be a contract on the target chain or the current chain). - * @param data The input data for the target contract's cross-chain call. + * @param to_business_contract The address of the target contract, indicating where the message will be sent (can be a contract on the target chain or the current chain). + * @param to_message The input data for the target contract's cross-chain call. * @param signatures An array of signatures used to verify the legitimacy of the message, ensuring only authorized senders can send the message. */ - function send(uint256 from_chain_id, uint256 from_id, address from_sender, address contract_address, bytes calldata data, bytes[] calldata signatures) external; + function send(uint256 from_chain_id, uint256 from_id, address from_sender, address to_business_contract, bytes calldata to_message, bytes[] calldata signatures) external; /** * Set the validator role for a specific chain @@ -79,8 +79,8 @@ interface IB2MessageBridge { // Event declarations event SetWeight(uint256 chain_id, uint256 weight); // Event emitted when weight is set event SetValidatorRole(uint256 chain_id, address account, bool valid); // Event emitted when validator role is set - event Send(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes data); // Event emitted when a message is sent - event Call(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes data); // Event emitted when a message call is made + event Send(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes to_message); // Event emitted when a message is sent + event Call(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes to_message); // Event emitted when a message call is made } interface IBusinessContract { @@ -89,16 +89,16 @@ interface IBusinessContract { * @param from_chain_id The ID of the originating chain, used to validate the source of the message. * @param from_id The ID of the cross-chain message, used to check if the message has already been processed to prevent duplication. * @param from_sender The address of the sender on the originating chain, used to verify the sender's legitimacy (business needs may dictate whether verification is necessary). - * @param data The input data for processing the cross-chain message, which may need to be decoded based on byte encoding rules. + * @param message The input data for processing the cross-chain message, which may need to be decoded based on byte encoding rules. * @return success Indicates whether the message processing was successful, returning true for success and false for failure. */ - function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata data) external returns (bool success); + function send(uint256 from_chain_id, uint256 from_id, address from_sender, bytes calldata message) external returns (bool success); } -contract B2MessageBridge is IB2MessageBridge, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { +contract B2MessageSharing is IB2MessageSharing, Initializable, UUPSUpgradeable, EIP712Upgradeable, AccessControlUpgradeable { using ECDSA for bytes32; - bytes32 public constant SEND_HASH_TYPE = keccak256('Send(uint256 from_chain_id,uint256 from_id,address from_sender,uint256 to_chain_id,address contract_address,bytes data)'); + bytes32 public constant SEND_HASH_TYPE = keccak256('Send(uint256 from_chain_id,uint256 from_id,address from_sender,uint256 to_chain_id,address to_business_contract,bytes to_message)'); bytes32 public constant ADMIN_ROLE = keccak256("admin_role"); bytes32 public constant UPGRADE_ROLE = keccak256("upgrade_role"); @@ -107,7 +107,7 @@ contract B2MessageBridge is IB2MessageBridge, Initializable, UUPSUpgradeable, EI mapping (uint256 => uint256) public weights; function initialize() public initializer { - __EIP712_init("B2MessageBridge", "1"); + __EIP712_init("B2MessageSharing", "1"); __AccessControl_init(); __UUPSUpgradeable_init(); _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); @@ -124,7 +124,7 @@ contract B2MessageBridge is IB2MessageBridge, Initializable, UUPSUpgradeable, EI } function validatorRole(uint256 chain_id) public pure override returns (bytes32) { - return keccak256(abi.encode("validator_role",chain_id)); + return keccak256(abi.encode("validator_role", chain_id)); } function setWeight(uint256 chainId, uint256 _weight) external override onlyRole(ADMIN_ROLE) { @@ -132,37 +132,38 @@ contract B2MessageBridge is IB2MessageBridge, Initializable, UUPSUpgradeable, EI emit SetWeight(chainId, _weight); } - function send(uint256 from_chain_id, uint256 from_id, address from_sender, address contract_address, bytes calldata data, bytes[] calldata signatures) external override { + function send(uint256 from_chain_id, uint256 from_id, address from_sender, address to_business_contract, bytes calldata to_message, bytes[] calldata signatures) external override { require(!ids[from_chain_id][from_id], "non-repeatable processing"); + require(weights[from_chain_id] > 0, "weight not set"); uint256 weight_ = 0; for(uint256 i = 0; i < signatures.length; i++) { - bool success = verify(from_chain_id, from_id, from_sender, block.chainid, contract_address, data, signatures[i]); + bool success = verify(from_chain_id, from_id, from_sender, block.chainid, to_business_contract, to_message, signatures[i]); if (success) { weight_ = weight_ + 1; } } require(weight_ >= weights[from_chain_id], "verify signatures weight invalid"); - if (contract_address != address(0x0)) { - bool success = IBusinessContract(contract_address).send(from_chain_id, from_id, from_sender, data); + if (to_business_contract != address(0x0)) { + bool success = IBusinessContract(to_business_contract).send(from_chain_id, from_id, from_sender, to_message); require(success, "Call failed"); } - emit Send(from_chain_id, from_id, from_sender, block.chainid, contract_address, data); + emit Send(from_chain_id, from_id, from_sender, block.chainid, to_business_contract, to_message); } - function call(uint256 to_chain_id, address contract_address, bytes calldata data) external override returns (uint256) { + function call(uint256 to_chain_id, address to_business_contract, bytes calldata to_message) external override returns (uint256) { sequences[to_chain_id]++; - emit Call(block.chainid, sequences[to_chain_id], msg.sender, to_chain_id, contract_address, data); + emit Call(block.chainid, sequences[to_chain_id], msg.sender, to_chain_id, to_business_contract, to_message); return sequences[to_chain_id]; } - function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes calldata data, bytes calldata signature) public view override returns (bool) { - bytes32 digest = SendHash(from_chain_id, from_id, from_sender, to_chain_id, contract_address, data); + function verify(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message, bytes calldata signature) public view override returns (bool) { + bytes32 digest = SendHash(from_chain_id, from_id, from_sender, to_chain_id, to_business_contract, to_message); return hasRole(validatorRole(from_chain_id), digest.recover(signature)); } - function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address contract_address, bytes calldata data) public view override returns (bytes32) { - return _hashTypedDataV4(keccak256(abi.encode(SEND_HASH_TYPE,from_chain_id, from_id, from_sender, to_chain_id, contract_address, keccak256(data)))); + function SendHash(uint256 from_chain_id, uint256 from_id, address from_sender, uint256 to_chain_id, address to_business_contract, bytes calldata to_message) public view override returns (bytes32) { + return _hashTypedDataV4(keccak256(abi.encode(SEND_HASH_TYPE,from_chain_id, from_id, from_sender, to_chain_id, to_business_contract, keccak256(to_message)))); } function setValidatorRole(uint256 chain_id, address account, bool valid) external override onlyRole(ADMIN_ROLE) { @@ -171,7 +172,7 @@ contract B2MessageBridge is IB2MessageBridge, Initializable, UUPSUpgradeable, EI } else { _revokeRole(validatorRole(chain_id), account); } - emit SetValidatorRole(chain_id, account,valid); + emit SetValidatorRole(chain_id, account, valid); } } \ No newline at end of file diff --git a/contracts/hardhat.config.js b/contracts/hardhat.config.js index 71e771ac..74aab3ff 100644 --- a/contracts/hardhat.config.js +++ b/contracts/hardhat.config.js @@ -7,11 +7,11 @@ const AS = { } const B2 = { - RPC_URL: process.env.B2_RPC_URL || "", PRIVATE_KEY_LIST: [process.env.AS_PRIVATE_KEY_0 || ""], + RPC_URL: process.env.B2_RPC_URL || "", PRIVATE_KEY_LIST: [process.env.B2_PRIVATE_KEY_0 || ""], } const B2_DEV = { - RPC_URL: process.env.B2_DEV_RPC_URL || "", PRIVATE_KEY_LIST: [process.env.AS_DEV_PRIVATE_KEY_0 || ""], + RPC_URL: process.env.B2_DEV_RPC_URL || "", PRIVATE_KEY_LIST: [process.env.B2_DEV_PRIVATE_KEY_0 || ""], } const AS_DEV = { diff --git a/contracts/scripts/business/grant_role.js b/contracts/scripts/business/grant_role.js index ab8d7f8d..271d9f97 100644 --- a/contracts/scripts/business/grant_role.js +++ b/contracts/scripts/business/grant_role.js @@ -14,7 +14,8 @@ async function main() { let senderAddress; if (network.name == 'b2dev') { businessAddress = "0x804641e29f5F63a037022f0eE90A493541cCb869"; - senderAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + // senderAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + senderAddress = "0x0527aE9B13cdb9ce3B4250303702Be7845A24451"; } else if (network.name == 'asdev') { businessAddress = "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534"; diff --git a/contracts/scripts/message/call.js b/contracts/scripts/message/call.js index 5f94ae61..a383c15f 100644 --- a/contracts/scripts/message/call.js +++ b/contracts/scripts/message/call.js @@ -17,7 +17,8 @@ async function main() { let businessAddress; let to_chain_id; if (network.name == 'b2dev') { - messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; businessAddress = "0x8Ac2C830532d7203a12C4C32C0BE4d3d15917534"; to_chain_id = 421614; } else if (network.name == 'asdev') { @@ -33,11 +34,11 @@ async function main() { } console.log("Message Address: ", messageAddress); console.log("Business Address: ", businessAddress); - + // MessageSharing.sol // TODO let data = '0x1234'; - const B2MessageBridge = await ethers.getContractFactory("B2MessageBridge"); - const instance = await B2MessageBridge.attach(messageAddress); + const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); + const instance = await B2MessageSharing.attach(messageAddress); let tx = await instance.call(to_chain_id, businessAddress, data); const txReceipt = await tx.wait(1); diff --git a/contracts/scripts/message/deploy.js b/contracts/scripts/message/deploy.js index 8651dc60..1041340a 100644 --- a/contracts/scripts/message/deploy.js +++ b/contracts/scripts/message/deploy.js @@ -12,10 +12,10 @@ async function main() { const [owner] = await ethers.getSigners() console.log("Owner Address:", owner.address); // 0x2BC22b1754ff4aDea4Ef9bdF9b16A7210bC45579 - const B2MessageBridge = await ethers.getContractFactory("B2MessageBridge"); - const instance = await upgrades.deployProxy(B2MessageBridge); + const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); + const instance = await upgrades.deployProxy(B2MessageSharing); await instance.waitForDeployment(); - console.log("B2MessageBridge Address:", instance.target); + console.log("B2MessageSharing Address:", instance.target); } main() diff --git a/contracts/scripts/message/grant_role.js b/contracts/scripts/message/grant_role.js index 0e7d9364..b4b308b4 100644 --- a/contracts/scripts/message/grant_role.js +++ b/contracts/scripts/message/grant_role.js @@ -1,6 +1,5 @@ const {ethers, network} = require("hardhat"); - async function main() { /** * # dev @@ -14,7 +13,8 @@ async function main() { console.log("Owner Address: ", owner.address); let messageAddress; if (network.name == 'b2dev') { - messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; } else if (network.name == 'asdev') { messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; } else if (network.name == 'b2') { @@ -23,12 +23,13 @@ async function main() { messageAddress = ""; } console.log("Message Address: ", messageAddress); - // bridge - const bridge = await ethers.getContractFactory("B2MessageBridge"); - const instance = await bridge.attach(messageAddress); + // B2MessageSharing + const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); + const instance = await B2MessageSharing.attach(messageAddress); // TODO // let role = await instance.ADMIN_ROLE(); // admin role // let role = await instance.UPGRADE_ROLE(); // upgrade role + // let chainId = 0; let chainId = 421614; let role = await instance.validatorRole(chainId); // validatorRole(uint256 chain_id) console.log("role hash: ", role); diff --git a/contracts/scripts/message/revoke_role.js b/contracts/scripts/message/revoke_role.js index 6fdf5687..96f78fc9 100644 --- a/contracts/scripts/message/revoke_role.js +++ b/contracts/scripts/message/revoke_role.js @@ -23,9 +23,9 @@ async function main() { messageAddress = ""; } console.log("Message Address: ", messageAddress); - // bridge - const bridge = await ethers.getContractFactory("B2MessageBridge"); - const instance = await bridge.attach(messageAddress); + // B2MessageSharing + const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); + const instance = await B2MessageSharing.attach(messageAddress); // TODO let role = await instance.ADMIN_ROLE(); // admin role // role = await instance.UPGRADE_ROLE(); // upgrade role diff --git a/contracts/scripts/message/send.js b/contracts/scripts/message/send.js index bf7dfbac..be595ddf 100644 --- a/contracts/scripts/message/send.js +++ b/contracts/scripts/message/send.js @@ -1,5 +1,10 @@ const {ethers, upgrades, network} = require("hardhat"); +``` +# Listener + +``` + async function main() { /** * b2dev: yarn hardhat run scripts/message/send.js --network b2dev @@ -13,7 +18,8 @@ async function main() { let messageAddress; if (network.name == 'b2dev') { - messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; } else if (network.name == 'asdev') { messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; } else if (network.name == 'b2') { @@ -23,16 +29,16 @@ async function main() { } console.log("Message Address: ", messageAddress); - const B2MessageBridge = await ethers.getContractFactory("B2MessageBridge"); - const instance = await B2MessageBridge.attach(messageAddress); + const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); + const instance = await B2MessageSharing.attach(messageAddress); let from_chain_id = 421614; - let from_id = '7'; + let from_id = '0x000000000000000000000000000000000000000000000000000000000000000a'; let from_sender = "0x98C6e991D1b338604D4Fa10F351a27012eFe8eC2"; let to_chain_id = 1123; let contract_address = '0x804641e29f5F63a037022f0eE90A493541cCb869'; let data = '0x1234'; - let signatures = ['0x046cb13fd7fb4e0ea5e45a30c8e7a5e1ca46121c9aded084fc533290f45c443a098088a64d592ef123704a9086a91ca0fcd4d2ef265aa107dfd776fea2e7cf001c']; + let signatures = ['0x27bda5470df8273d66f40fc50f4f6cd7b79f890a02383519c9e0315cbedc180b283381744a10fa7924ceca44faf947dbc3c94aaf059ed7d802393b58b490db321b']; let weight = 0; for (const signature of signatures) { diff --git a/contracts/scripts/message/set_weight.js b/contracts/scripts/message/set_weight.js index 75c809eb..53a0ab47 100644 --- a/contracts/scripts/message/set_weight.js +++ b/contracts/scripts/message/set_weight.js @@ -13,7 +13,8 @@ async function main() { console.log("Owner Address: ", owner.address); let messageAddress; if (network.name == 'b2dev') { - messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; } else if (network.name == 'asdev') { messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; } else if (network.name == 'b2') { @@ -22,11 +23,12 @@ async function main() { messageAddress = ""; } console.log("Message Address: ", messageAddress); - // bridge - const bridge = await ethers.getContractFactory("B2MessageBridge"); - const instance = await bridge.attach(messageAddress); + // sharing + const sharing = await ethers.getContractFactory("B2MessageSharing"); + const instance = await sharing.attach(messageAddress); let _weight = 1; + // let chainId = 0; let chainId = 421614; let weight = await instance.weights(chainId); diff --git a/contracts/scripts/message/upgrade.js b/contracts/scripts/message/upgrade.js index 7b5a11a3..70ac953c 100644 --- a/contracts/scripts/message/upgrade.js +++ b/contracts/scripts/message/upgrade.js @@ -13,7 +13,8 @@ async function main() { console.log("Owner Address:", owner.address); let messageAddress = ''; if (network.name == 'b2dev') { - messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + // messageAddress = "0xe55c8D6D7Ed466f66D136f29434bDB6714d8E3a5"; + messageAddress = "0xDf5b12f094cf9b12eb2523cC43a62Dd6787D7AB8"; } else if (network.name == 'asdev') { messageAddress = "0x2A82058E46151E337Baba56620133FC39BD5B71F"; } else if (network.name == 'b2') { @@ -24,9 +25,9 @@ async function main() { console.log("Message Address: ", messageAddress); // Upgrading - const B2MessageBridge = await ethers.getContractFactory("B2MessageBridge"); - const upgraded = await upgrades.upgradeProxy(messageAddress, B2MessageBridge); - console.log("B2MessageBridge upgraded:", upgraded.target); + const B2MessageSharing = await ethers.getContractFactory("B2MessageSharing"); + const upgraded = await upgrades.upgradeProxy(messageAddress, B2MessageSharing); + console.log("B2MessageSharing upgraded:", upgraded.target); } main()