diff --git a/.env.example b/.env.example index 8d37f159..b24a084b 100644 --- a/.env.example +++ b/.env.example @@ -1,12 +1,19 @@ export LOCAL_RPC_URL= export ETH_MAINNET_RPC_URL= -export ETH_GOERLI_RPC_URL= export ETH_SEPOLIA_RPC_URL= +export BASE_GOERLI_RPC_URL= +export ETH_GOERLI_RPC_URL= export ETHERSCAN_API_KEY= export NAYMS_SALT= export OWNER_ACCOUNT_KEY= export SYSTEM_ADMIN_1= export BOOL_FORK_TEST= +export TESTS_FORK_UPGRADE_DIAMOND= +export TESTS_FORK_DIAMOND_ADDRESS_1= +export TESTS_FORK_DIAMOND_ADDRESS_11155111= +export TESTS_FORK_DIAMOND_ADDRESS_31337= +export TESTS_FORK_DIAMOND_ADDRESS_84531= export FORK_BLOCK_1= export FORK_BLOCK_11155111= -export FORK_BLOCK_31337= \ No newline at end of file +export FORK_BLOCK_31337= +export FORK_BLOCK_84531= \ No newline at end of file diff --git a/.env.proposal b/.env.proposal deleted file mode 100644 index 1a69637a..00000000 --- a/.env.proposal +++ /dev/null @@ -1,14 +0,0 @@ -export LOCAL_ID=123 -export LOCAL_RPC_URL= -export LOCAL_OWNER_ACCOUNT_KEY= - -export MAINNET_ID=1 -export MAINNET_RPC_URL= -export MAINNET_OWNER_ACCOUNT_KEY= - -export SEPOLIA_ID=11155111 -export SEPOLIA_RPC_URL= -export SEPOLIA_OWNER_ACCOUNT_KEY= - -export ETHERSCAN_API_KEY= -export NAYMS_SALT= diff --git a/.eslintrc.js b/.eslintrc.js index 9a752139..03817800 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,22 +1,21 @@ module.exports = { - env: { - browser: false, - es2021: true, - mocha: true, - node: true, - }, - extends: [ - "standard", - "plugin:prettier/recommended", - "plugin:node/recommended", - ], - parserOptions: { - ecmaVersion: 12, - }, - overrides: [ - { - files: ["hardhat.config.js"], - globals: { task: true }, + env: { + browser: false, + es2021: true, + mocha: true, + node: true, }, - ], + eslint: { + runtime: "node" + }, + extends: ["standard", "plugin:prettier/recommended", "plugin:node/recommended"], + parserOptions: { + ecmaVersion: 12, + }, + overrides: [ + { + files: ["hardhat.config.js"], + globals: { task: true }, + }, + ], }; diff --git a/.gas-snapshot b/.gas-snapshot index 662e21e4..004865b0 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -71,10 +71,10 @@ T02UserTest:testGetUserIdFromAddress() (gas: 13111) T02UserTest:testSetEntityFailsIfNotSysAdmin() (gas: 17858) T02UserTest:testSetNonExistingEntity() (gas: 21330) T03NaymsOwnershipTest:testFuzz_TransferOwnership(address,address,address) (runs: 256, μ: 115399, ~: 115399) -T03NaymsOwnershipTest:testTransferOwernship() (gas: 80801) -T03NaymsOwnershipTest:testTransferOwernshipFailsIfNewOwnerIsSysAdmin() (gas: 63812) -T03NaymsOwnershipTest:testTransferOwernshipFailsIfNewOwnerIsSysManager() (gas: 102978) -T03NaymsOwnershipTest:testTransferOwernshipFailsIfNotSysAdmin() (gas: 17824) +T03NaymsOwnershipTest:testTransferOwnership() (gas: 80801) +T03NaymsOwnershipTest:testTransferOwnershipFailsIfNewOwnerIsSysAdmin() (gas: 63812) +T03NaymsOwnershipTest:testTransferOwnershipFailsIfNewOwnerIsSysManager() (gas: 102978) +T03NaymsOwnershipTest:testTransferOwnershipFailsIfNotSysAdmin() (gas: 17824) T03SystemFacetTest:testD03CreateEntity() (gas: 18686) T03SystemFacetTest:testGetObjectMeta() (gas: 250099) T03SystemFacetTest:testIsObject() (gas: 239012) diff --git a/.gemforge/.gitignore b/.gemforge/.gitignore new file mode 100644 index 00000000..d749133c --- /dev/null +++ b/.gemforge/.gitignore @@ -0,0 +1,3 @@ +*.json +*.sol +*.log \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f3a779d9..75276575 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: "16" + node-version: 20 cache: "yarn" registry-url: "https://registry.npmjs.org" scope: "@nayms" diff --git a/.github/workflows/npm.yml b/.github/workflows/npm.yml index e6b94c06..2a0409a4 100644 --- a/.github/workflows/npm.yml +++ b/.github/workflows/npm.yml @@ -26,12 +26,12 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: "16.x" + node-version: 20 registry-url: "https://registry.npmjs.org" always-auth: true - name: Install solc - run: svm install 0.7.6 && svm install 0.8.17 && svm use 0.8.17 + run: svm install 0.7.6 && svm install 0.8.20 && svm use 0.8.20 - name: Fix ownership run: git config --global --add safe.directory /__w/contracts-v3/contracts-v3 @@ -41,14 +41,22 @@ jobs: - name: Install Node dependencies run: yarn - - - name: Prepare build - run: make prep-build + + - name: Drop-in Test Wallet + run: echo "test test test test test test test test test test test junk" > ./nayms_mnemonic.txt - name: Build solidity contracts run: make build + env: + ETH_MAINNET_RPC_URL: ${{ secrets.ETH_MAINNET_RPC_URL }} + ETH_SEPOLIA_RPC_URL: ${{ secrets.ETH_SEPOLIA_RPC_URL }} + ETH_GOERLI_RPC_URL: ${{ secrets.ETH_GOERLI_RPC_URL }} + BASE_GOERLI_RPC_URL: ${{ secrets.BASE_GOERLI_RPC_URL }} + + - name: Filter ABI + run: make filter-abi - name: Publish to NPM - run: npm publish + run: rm src/generated/.gitignore && npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} diff --git a/.github/workflows/solstat.yml b/.github/workflows/solstat.yml index 57cfd0e2..da2b6d05 100644 --- a/.github/workflows/solstat.yml +++ b/.github/workflows/solstat.yml @@ -1,9 +1,9 @@ name: solstat on: - push: - branches: - - main - pull_request: + # push: + # branches: + # - main + # pull_request: workflow_dispatch: {} workflow_call: @@ -26,7 +26,7 @@ jobs: submodules: recursive - name: Make solstat report - run: solstat --path ./src/diamonds/nayms/ + run: solstat --path ./src/ - name: Publish solstat report run: cat solstat_report.md >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 92929ca7..39f3fa5e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,8 +24,13 @@ jobs: with: submodules: recursive + - uses: actions/setup-node@v3 + with: + node-version: 20 + cache: "yarn" + - name: Install solc - run: svm install 0.7.6 && svm install 0.8.17 && svm use 0.8.17 + run: svm install 0.7.6 && svm install 0.8.20 && svm use 0.8.20 - name: Fix ownership run: git config --global --add safe.directory /__w/contracts-v3/contracts-v3 @@ -36,18 +41,26 @@ jobs: - name: Install Node dependencies run: yarn - - name: Prepare build - run: make prep-build + - name: Drop-in Test Wallet + run: echo "test test test test test test test test test test test junk" > ./nayms_mnemonic.txt && echo "test test test test test test test test test test test junk" > ./nayms_mnemonic_mainnet.txt - name: Build solidity contracts run: make build + env: + ETH_MAINNET_RPC_URL: ${{ secrets.ETH_MAINNET_RPC_URL }} + ETH_SEPOLIA_RPC_URL: ${{ secrets.ETH_SEPOLIA_RPC_URL }} + ETH_GOERLI_RPC_URL: ${{ secrets.ETH_GOERLI_RPC_URL }} + BASE_MAINNET_RPC_URL: ${{ secrets.BASE_MAINNET_RPC_URL }} + BASE_GOERLI_RPC_URL: ${{ secrets.BASE_GOERLI_RPC_URL }} - name: Tests - local + run: make test env: ETH_MAINNET_RPC_URL: ${{ secrets.ETH_MAINNET_RPC_URL }} ETH_SEPOLIA_RPC_URL: ${{ secrets.ETH_SEPOLIA_RPC_URL }} ETH_GOERLI_RPC_URL: ${{ secrets.ETH_GOERLI_RPC_URL }} - run: make test + BASE_MAINNET_RPC_URL: ${{ secrets.BASE_MAINNET_RPC_URL }} + BASE_GOERLI_RPC_URL: ${{ secrets.BASE_GOERLI_RPC_URL }} - name: Coverage report env: @@ -61,35 +74,12 @@ jobs: path-to-lcov: "./lcov-filtered.info" - name: Slither Static Analyser - uses: crytic/slither-action@v0.2.0 id: slither - with: - sarif: results.sarif - target: src/diamonds/nayms - slither-args: --exclude solc-version,assembly-usage,naming-convention,low-level-calls --ignore-compile - continue-on-error: true + env: + SOLC_VERSION: 0.8.20 + run: make slither - name: Upload Slither SARIF file uses: github/codeql-action/upload-sarif@v2 with: - sarif_file: ${{ steps.slither.outputs.sarif }} - - # - name: Generate upgrade hashes - # env: - # ETH_MAINNET_RPC_URL: ${{ secrets.ETH_MAINNET_RPC_URL }} - # ETH_GOERLI_RPC_URL: ${{ secrets.ETH_GOERLI_RPC_URL }} - # ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} - # run: | - # make upgrade-hash-mainnet - # make upgrade-hash-goerli - # make upgrade-hash-sepolia - - # echo "### Upgrade hash" >> $GITHUB_STEP_SUMMARY - # echo " - mainnet \`$(jq --raw-output '.returns.upgradeHash.value' broadcast/SmartDeploy.s.sol/1/dry-run/hash-latest.json || echo "Not Available")\`" >> $GITHUB_STEP_SUMMARY - # echo "> $(jq --raw-output '.returns.cut.value' broadcast/SmartDeploy.s.sol/1/dry-run/hash-latest.json || echo "Not Available")" >> $GITHUB_STEP_SUMMARY - - # echo " - goerli \`$(jq --raw-output '.returns.upgradeHash.value' broadcast/SmartDeploy.s.sol/5/dry-run/hash-latest.json || echo "Not Available")\`" >> $GITHUB_STEP_SUMMARY - # echo "> $(jq --raw-output '.returns.cut.value' broadcast/SmartDeploy.s.sol/5/dry-run/hash-latest.json || echo "Not Available")" >> $GITHUB_STEP_SUMMARY - - # echo " - sepolia \`$(jq --raw-output '.returns.upgradeHash.value' broadcast/SmartDeploy.s.sol/11155111/dry-run/hash-latest.json || echo "Not Available")\`" >> $GITHUB_STEP_SUMMARY - # echo "> $(jq --raw-output '.returns.cut.value' broadcast/SmartDeploy.s.sol/11155111/dry-run/hash-latest.json || echo "Not Available") >> $GITHUB_STEP_SUMMARY \ No newline at end of file + sarif_file: results.sarif diff --git a/.github/workflows/upgrade-goerli-diamond.yml b/.github/workflows/upgrade-goerli-diamond.yml deleted file mode 100644 index 191a83ba..00000000 --- a/.github/workflows/upgrade-goerli-diamond.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: upgrade-goerli-diamond -on: - workflow_dispatch: {} - workflow_call: - -jobs: - run-tests: - name: Upgrade Goerli diamond - runs-on: ubuntu-latest - # https://docs.github.com/en/actions/reference/authentication-in-a-workflow - permissions: - id-token: write - packages: read - contents: write - security-events: write - timeout-minutes: 15 - container: - image: ghcr.io/nayms/contracts-builder:latest - steps: - - uses: actions/checkout@v3 - with: - submodules: true - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Install solc - run: svm install 0.8.17 && svm use 0.8.17 - - - name: Fix ownership - run: git config --global --add safe.directory /__w/contracts-v3/contracts-v3 - - - name: Install Forge dependencies - run: forge install - - - name: Install Node dependencies - run: yarn - - - name: Prepare build - run: make prep-build - - - name: Build solidity contracts - run: make build - - - name: Schedule upgrade to Goerli diamond, and then upgrade Goerli diamond - env: - ETH_GOERLI_RPC_URL: ${{ secrets.ETH_GOERLI_RPC_URL }} - ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} - OWNER_ACCOUNT_KEY: ${{ secrets.OWNER_ACCOUNT_KEY }} - run: make schedule-upgrade-goerli - - - name: Set git identity - run: | - git config --global user.email "engineering@nayms.com" - git config --global user.name "Nayms Engineering" - - - name: Commit broadcast files - run: | - git add . - git commit -m "deploy: add latest Goerli broadcasts" - git push diff --git a/.gitignore b/.gitignore index a2bdbd3a..91fc9374 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ anvil*.json # yarn v1, node node_modules +yarn-*.log # Hardhat files cache @@ -34,6 +35,7 @@ facetsdeployed.txt .vscode/slither-results.json .history +.DS_Store bin/ .idea/.gitignore @@ -42,6 +44,7 @@ bin/ .idea/modules.xml .idea/runConfigurations.xml .idea/vcs.xml +.metals broadcast/**/31337/* @@ -53,8 +56,8 @@ broadcast/**/dry-run # coverage report cov-html -# macOS -.DS_Store +# Gemforge +# gemforge.deployments.json # Generated files -script/deployment/S03UpgradeDiamond.s.sol \ No newline at end of file +script/deployment/S03UpgradeDiamond.s.sol diff --git a/.gitmodules b/.gitmodules index a5cc3621..64fd8024 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,12 +10,20 @@ [submodule "lib/solidity-lib"] path = lib/solidity-lib url = https://github.com/uniswap/solidity-lib -[submodule "lib/ozv4"] - path = lib/ozv4 - url = https://github.com/openzeppelin/openzeppelin-contracts [submodule "lib/v3-periphery-foundry"] path = lib/v3-periphery-foundry url = https://github.com/gakonst/v3-periphery-foundry [submodule "lib/solidity-stringutils"] path = lib/solidity-stringutils url = https://github.com/arachnid/solidity-stringutils +[submodule "lib/oz"] + path = lib/oz + url = https://github.com/openzeppelin/openzeppelin-contracts + branch = merge/release-v5.0 +[submodule "lib/diamond-2-hardhat"] + path = lib/diamond-2-hardhat + url = https://github.com/gemstation/diamond-2-hardhat + branch = gemforge-2 +[submodule "lib/solady"] + path = lib/solady + url = https://github.com/Vectorized/solady diff --git a/Makefile b/Makefile index d5fc8e78..dcf209ba 100644 --- a/Makefile +++ b/Makefile @@ -3,14 +3,8 @@ -include .env # Deployment defaults -facetsToCutIn="[]" -newDiamond=false -initNewDiamond=false -facetAction=1 # 0 - all, 1 - changed, 2 - listed -deploymentSalt=0xdeffffffff ownerAddress=0x931c3aC09202650148Edb2316e97815f904CF4fa systemAdminAddress=0x2dF0a6dB2F0eF1269bE777C856A7665eeC00649f -updateStateAddress= .DEFAULT_GOAL := help @@ -34,22 +28,8 @@ formatsol: ## run prettier on src, test and scripts lintsol: ## run prettier and solhint yarn run lint -gen-i: ## generate solidity interfaces from facet implementations - forge script GenerateInterfaces \ - -s "run(string memory, string memory)" src/diamonds/nayms/interfaces/ 0.8.13 \ - --ffi - -prep-build: ## prepare buld, generate LibGeneratedNaymsFacetHelpers. This excludes ACL and Governance facets, which are deployed with the Nayms diamond. - node ./cli-tools/prep-build.js ACL Governance - -prep-build-all: ## prepare buld, generate LibGeneratedNaymsFacetHelpers. This includes all facets in the src/diamonds/nayms/facets folder. - node ./cli-tools/prep-build.js - -prep-upgrade: ## Generate upgrade script S03UpgradeDiamond.s.sol with cut information from broadcast json file. Pass in e.g. broadcastJson=broadcast/S01DeployContract.s.sol/31337/run-latest.json - node ./cli-tools/prep-upgrade.js ${broadcastJson} - build: ## forge build - forge build --names --sizes + yarn build b: build bscript: ## build forge scripts @@ -153,7 +133,6 @@ erc20-mainnet-sim: ## simulate deploy mock ERC20 --ffi \ ; node cli-tools/postproc-broadcasts.js -# use the "@" to hide the command from your shell erc20g: ## deploy test ERC20 to Goerli @forge script DeployERC20 -s "deploy(string memory _name, string memory _symbol, uint8 _decimals)" \ ${ERC20_NAME} ${ERC20_SYMBOL} ${ERC20_DECIMALS} \ @@ -166,293 +145,6 @@ erc20g: ## deploy test ERC20 to Goerli --verify \ -vvvv -deploy-goerli: ## smart deploy to goerli - @forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f ${ETH_GOERLI_RPC_URL} \ - --chain-id 5 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - --verify --delay 30 --retries 10 \ - ; node cli-tools/postproc-broadcasts.js - -deploy-goerli-sim: ## simulate smart deploy to goerli - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f ${ETH_GOERLI_RPC_URL} \ - --chain-id 5 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - -vv \ - --ffi - -deploy-sepolia: ## smart deploy to sepolia - @forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f ${ETH_SEPOLIA_RPC_URL} \ - --chain-id 11155111 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - --verify --delay 30 --retries 10 \ - ; node cli-tools/postproc-broadcasts.js - -deploy-sepolia-fork: ## smart deploy to local sepolia fork - @forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 11155111 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - ; node cli-tools/postproc-broadcasts.js - -deploy-sepolia-sim: ## simulate smart deploy to sepolia - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f ${ETH_SEPOLIA_RPC_URL} \ - --chain-id 11155111 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - -vv \ - --ffi - -deploy-mainnet: ## smart deploy to mainnet - @forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - --slow \ - --verify --delay 30 --retries 10 \ - ; node cli-tools/postproc-broadcasts.js - -deploy-mainnet-sim: ## simulate deploy to mainnet - @forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - -vv \ - --ffi - -deploy-mainnet-init: ## upgrade to mainnet with a state update via a state updating (init) contract - @forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, address, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${updateStateAddress} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - --slow \ - --verify --delay 30 --retries 10 \ - ; node cli-tools/postproc-broadcasts.js - -deploy-mainnet-init-sim: ## simulate upgrade to mainnet with a state update via a state updating (init) contract - @forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, address, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${updateStateAddress} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - -vv \ - --ffi - -deploy-mainnet-fork: ## smart deploy to local mainnet fork - @cast rpc anvil_impersonateAccount ${mainnetSysAdmin} && \ - cast send ${diamondAddress} "transferOwnership(address)" \ - ${ownerAddress} \ - -r http:\\127.0.0.1:8545 \ - --unlocked \ - --from ${mainnetSysAdmin} && \ - cast rpc anvil_setBalance ${ownerAddress} 10000000000000000000 -r http:\\127.0.0.1:8545 && \ - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 1 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - --slow \ - ; node cli-tools/postproc-broadcasts.js - -deploy-contract: ## deploy any contract to mainnet - forge script S01DeployContract \ - -s "run(string calldata)" ${contractName} \ - -f ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --sender ${senderAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 0 \ - -vv \ - --ffi \ - --broadcast \ - --verify --delay 30 --retries 10 \ - ; node cli-tools/postproc-broadcasts.js - -deploy-contract-sim: ## simulate deploying any contract to mainnet - forge script S01DeployContract \ - -s "run(string calldata)" ${contractName} \ - -f ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --sender ${senderAddress} \ - -vv \ - --ffi - -deploy-contract-sepolia: ## deploy any contract to Sepolia - forge script S01DeployContract \ - -s "run(string calldata)" ${contractName} \ - -f ${ETH_SEPOLIA_RPC_URL} \ - --chain-id 1 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - --verify --delay 30 --retries 10 \ - ; node cli-tools/postproc-broadcasts.js - -schedule-upgrade-mainnet: ## schedule upgrade on mainnet - forge script S02ScheduleUpgrade \ - -s "run(address, bytes32)" ${systemAdminAddress} ${upgradeHash} \ - -f ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --sender ${systemAdminAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 0 \ - -vv \ - --ffi \ - --broadcast \ - ; node cli-tools/postproc-broadcasts.js - -schedule-upgrade-mainnet-fork: ## schedule upgrade on local mainnet fork (with NaymsAdminB) - cast rpc anvil_impersonateAccount 0xE6aD24478bf7E1C0db07f7063A4019C83b1e5929 && \ - cast send 0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5 "createUpgrade(bytes32)" \ - '${upgradeHash}' \ - --rpc-url http:\\127.0.0.1:8545 \ - --unlocked \ - --from 0xE6aD24478bf7E1C0db07f7063A4019C83b1e5929 - -schedule-upgrade-sepolia: ## schedule upgrade on sepolia - forge script S02ScheduleUpgrade \ - -s "run(address, bytes32)" ${systemAdminAddress} ${upgradeHash} \ - -f ${ETH_SEPOLIA_RPC_URL} \ - --chain-id 11155111 \ - --sender ${systemAdminAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 0 \ - -vv \ - --ffi \ - --broadcast \ - ; node cli-tools/postproc-broadcasts.js - -schedule-upgrade-sepolia-fork: ## schedule upgrade on local sepolia fork - forge script S02ScheduleUpgrade \ - -s "run(address, bytes32)" ${systemAdminAddress} ${upgradeHash} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 11155111 \ - --sender ${systemAdminAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 0 \ - -vv \ - --ffi \ - --broadcast \ - ; node cli-tools/postproc-broadcasts.js - -schedule-upgrade-goerli: ## schedule upgrade to goerli diamond, then upgrade - @forge script SmartDeploy \ - -s "scheduleAndUpgradeDiamond()" \ - -f ${ETH_GOERLI_RPC_URL} \ - --chain-id 5 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --sender ${ownerAddress} \ - --private-key ${OWNER_ACCOUNT_KEY} \ - -vv \ - --ffi \ - --broadcast \ - --verify --delay 30 --retries 10 \ - ; node cli-tools/postproc-broadcasts.js - -diamond-cut-mainnet: ## replace a facet on mainnet - forge script S03UpgradeDiamond \ - -s "run(address)" ${ownerAddress} \ - -f ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 0 \ - -vv \ - --ffi \ - --broadcast \ - ; node cli-tools/postproc-broadcasts.js - -diamond-cut-mainnet-fork: ## replace a facet on local mainnet fork - forge script S03UpgradeDiamond \ - -s "run(address)" ${ownerAddress} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 1 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast - -diamond-cut-sepolia: ## replace a facet on sepolia - forge script S03UpgradeDiamond \ - -s "run(address)" ${ownerAddress} \ - -f ${ETH_SEPOLIA_RPC_URL} \ - --chain-id 11155111 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - ; node cli-tools/postproc-broadcasts.js - -diamond-cut-sepolia-fork: ## replace a facet on local sepolia fork - forge script S03UpgradeDiamond \ - -s "run(address)" ${ownerAddress} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 11155111 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast \ - ; node cli-tools/postproc-broadcasts.js - anvil: ## run anvil with shared wallet anvil --host 0.0.0.0 --chain-id 31337 --accounts 20 -m ./nayms_mnemonic.txt --state anvil.json @@ -468,132 +160,13 @@ anvil-dbg: ## run anvil in debug mode with shared wallet RUST_LOG=backend,api,node,rpc=warn anvil --host 0.0.0.0 --chain-id 31337 -m ./nayms_mnemonic.txt --state anvil.json anvil-fork-mainnet: ## fork mainnet locally with anvil - anvil -f ${ETH_MAINNET_RPC_URL} + anvil -f ${ETH_MAINNET_RPC_URL} --accounts 20 -m ./nayms_mnemonic.txt anvil-fork-sepolia: ## fork sepolia locally with anvil - anvil -f ${ETH_SEPOLIA_RPC_URL} + anvil -f ${ETH_SEPOLIA_RPC_URL} --accounts 20 -m ./nayms_mnemonic.txt -anvil-deploy-sim: ## Simulate smart deploy locally to anvil - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" true ${ownerAddress} ${systemAdminAddress} true 0 ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - -vv \ - --ffi - -anvil-deploy-diamond: ## smart deploy locally to anvil - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" true ${ownerAddress} ${systemAdminAddress} false 2 ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast - -anvil-upgrade-init-sim: ## Anvil - simulate upgrading a diamond WITH InitDiamond to obtain the upgrade hash - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} true 1 ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - -vv \ - --ffi - -anvil-upgrade-init: ## Anvil - upgrading a diamond WITH InitDiamond - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} true 1 ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast - -anvil-upgrade-init-addr: ## Anvil - upgrading a diamond WITH InitDiamond AND pass in init diamond address - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, address, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} ${updateStateAddress} 1 ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast - -anvil-upgrade-init-addr-sim: ## Anvil - simulate upgrading a diamond WITH InitDiamond AND pass in init diamond address. Use this to get the upgrade hash. - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, address, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} ${updateStateAddress} 1 ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi - -anvil-deploy-contract: ## deploy contract to anvil - forge script S01DeployContract \ - -s "run(string calldata)" ${contractName} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${senderAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 0 \ - -vv \ - --ffi \ - --broadcast - -anvil-upgrade-sim: ## smart deploy locally to anvil - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} false 1 ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - -vv \ - --ffi - -anvil-upgrade: ## smart deploy locally to anvil - forge script SmartDeploy \ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} false 1 ${facetsToCutIn} ${deploymentSalt} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast - -anvil-schedule: ## schedule an upgrade - forge script SmartDeploy \ - -s "schedule(bytes32)" ${upgradeHash} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${systemAdminAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 0 \ - -vv \ - --ffi \ - --broadcast - -anvil-diamond-cut: ## replace a facet - forge script S03UpgradeDiamond \ - -s "run(address)" ${ownerAddress} \ - -f http:\\127.0.0.1:8545 \ - --chain-id 31337 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vv \ - --ffi \ - --broadcast +anvil-fork-base: ## fork base locally with anvil + anvil -f ${BASE_MAINNET_RPC_URL} --accounts 20 -m ./nayms_mnemonic.txt anvil-gtoken: ## deploy dummy erc20 token to local node forge script DeployERC20 \ @@ -618,17 +191,16 @@ anvil-add-supported-external-token: ## Add a supported external token (anvil) -vv \ --broadcast -goerli-replace-ownership: ## Replace transferOwnership() - forge script ReplaceOwnershipFacet \ +add-supported-external-token: ## Add a supported external token (goerli) + @forge script AddSupportedExternalToken \ + -s "addSupportedExternalToken(address naymsDiamondAddress, address externalToken)" ${naymsDiamondAddress} ${externalToken} \ -f ${ETH_GOERLI_RPC_URL} \ --chain-id 5 \ --sender ${ownerAddress} \ --mnemonic-paths ./nayms_mnemonic.txt \ --mnemonic-indexes 19 \ -vv \ - --ffi \ - --broadcast \ - --verify --delay 30 --retries 10 + --broadcast create-entity: ## create an entity on the Nayms platform (using some default values, on anvil) forge script CreateEntity \ @@ -641,15 +213,14 @@ create-entity: ## create an entity on the Nayms platform (using some default val -vv \ --broadcast -add-supported-external-token: ## Add a supported external token (goerli) - @forge script AddSupportedExternalToken \ - -s "addSupportedExternalToken(address naymsDiamondAddress, address externalToken)" ${naymsDiamondAddress} ${externalToken} \ +update-entity: ## update + forge script UpdateEntity \ -f ${ETH_GOERLI_RPC_URL} \ --chain-id 5 \ --sender ${ownerAddress} \ --mnemonic-paths ./nayms_mnemonic.txt \ --mnemonic-indexes 19 \ - -vv \ + -vvvv \ --broadcast update-commissions: ## update trading and premium commissions @@ -663,55 +234,11 @@ update-commissions: ## update trading and premium commissions -vv \ --broadcast -subgraph: ## generate diamond ABI for the subgraph - yarn subgraph:abi - docs: ## generate docs from natspec comments yarn docgen slither: ## run slither static analysis - slither src/diamonds/nayms --exclude solc-version,assembly-usage,naming-convention,low-level-calls --ignore-compile - -upgrade-hash-sepolia: ## generate SEPOLIA upgrade hash - @forge script SmartDeploy \ - -s "hash(bool, address, address, bool, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} 1 "[]" ${deploymentSalt} \ - --fork-url ${ETH_SEPOLIA_RPC_URL} \ - --chain-id 11155111 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --ffi \ - --silent \ - && jq --raw-output '.returns.upgradeHash.value, .returns.cut.value' broadcast/SmartDeploy.s.sol/11155111/dry-run/hash-latest.json || echo "Not Available" - -upgrade-hash-goerli: ## generate GOERLI upgrade hash - @forge script SmartDeploy \ - -s "hash(bool, address, address, bool, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} 1 "[]" ${deploymentSalt} \ - --fork-url ${ETH_GOERLI_RPC_URL} \ - --chain-id 5 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --ffi \ - --silent \ - && jq --raw-output '.returns.upgradeHash.value, .returns.cut.value' broadcast/SmartDeploy.s.sol/5/dry-run/hash-latest.json - -upgrade-hash-mainnet: ## generate MAINNET upgrade hash - @forge script SmartDeploy \ - -s "hash(bool, address, address, bool, uint8, string[] memory, bytes32)" false ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} 1 "[]" ${deploymentSalt} \ - --fork-url ${ETH_MAINNET_RPC_URL} \ - --chain-id 1 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - --etherscan-api-key ${ETHERSCAN_API_KEY} \ - --ffi \ - --silent \ - && jq --raw-output '.returns.upgradeHash.value, .returns.cut.value' broadcast/SmartDeploy.s.sol/1/dry-run/hash-latest.json - -upgrade-hash-anvil: ## generate ANVIL upgrade hash - forge script SmartDeploy \ - -s "hash(bool, address, address, bool, uint8, string[] memory, bytes32)" ${newDiamond} ${ownerAddress} ${systemAdminAddress} ${initNewDiamond} ${facetAction} ${facetsToCutIn} ${deploymentSalt} \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - --ffi + slither src/generated --config-file=slither.config.json --fail-none verify-dry-run: ## dry run verify script, prints out commands to be executed node cli-tools/verify.js --dry-run @@ -719,16 +246,6 @@ verify-dry-run: ## dry run verify script, prints out commands to be executed verify: ## verify contracts on chain (goerli) node cli-tools/verify.js -update-e: ## update - forge script UpdateEntity \ - -f ${ETH_GOERLI_RPC_URL} \ - --chain-id 5 \ - --sender ${ownerAddress} \ - --mnemonic-paths ./nayms_mnemonic.txt \ - --mnemonic-indexes 19 \ - -vvvv \ - --broadcast - coderecon: ## code recon @forge script CodeRecon \ -s "run(string[] memory)" ${contractNames} \ @@ -760,4 +277,27 @@ checkf: ## Check if facet exists in a diamond --mnemonic-paths ./nayms_mnemonic.txt \ --mnemonic-indexes 19 \ -vv \ - --ffi \ No newline at end of file + --ffi + +bn-mainnet: ## get block number for mainnet and replace FORK_BLOCK_1 in .env + @result=$$(cast bn -r mainnet) && \ + sed -i '' "s/^export FORK_BLOCK_1=.*/export FORK_BLOCK_1=$$result/" .env + +bn-sepolia: ## get block number for sepolia and replace FORK_BLOCK_11155111 in .env + @result=$$(cast bn -r sepolia) && \ + sed -i '' "s/^export FORK_BLOCK_11155111=.*/export FORK_BLOCK_11155111=$$result/" .env + +tf: ## Toggle forking of tests. true == fork a node, false == no fork + @result=$$(grep -q 'BOOL_FORK_TEST=true' .env && echo "false" || echo "true"); \ + sed -i '' -e "s/BOOL_FORK_TEST=.*/BOOL_FORK_TEST=$$result/" .env; \ + echo "BOOL_FORK_TEST is now set to $$result" + +tu: ## Toggle upgrading the diamond in the forked tests. true == upgrade, false == no upgrade + @result=$$(grep -q 'TESTS_FORK_UPGRADE_DIAMOND=true' .env && echo "false" || echo "true"); \ + sed -i '' -e "s/TESTS_FORK_UPGRADE_DIAMOND=.*/TESTS_FORK_UPGRADE_DIAMOND=$$result/" .env; \ + echo "TESTS_FORK_UPGRADE_DIAMOND is now set to $$result" + +filter-abi: + @jq '[.[] | select(.name !="facets")]' src/generated/abi.json | \ + jq '[.[] | select(.name !="calculateUpgradeId")]' | \ + jq '[.[] | select(.name !="diamondCut")]' > src/generated/naymsDiamond.json diff --git a/README.md b/README.md index ebbdd4bc..92bd00f5 100644 --- a/README.md +++ b/README.md @@ -5,143 +5,78 @@ This repository contains Nayms V3 smart contracts. -## Get Started +This is a [Foundry](https://book.getfoundry.sh/) based project, so make sure you have it installed. -### Install Foundry +### Set up your project configuration -```zsh -curl -L https://foundry.paradigm.xyz | bash -``` +Check `.env.example` to see some of the environment variables you should have set in `.env` in order to run some of the commands. -#### Update Foundry +Create a `.env` and ensure it contains: -```zsh -foundryup ``` - -### Install Forge dependencies - -```zsh -forge update +LOCAL_RPC_URL= +ETH_MAINNET_RPC_URL= +ETH_GOERLI_RPC_URL= +ETH_SEPOLIA_RPC_URL= +ETHERSCAN_API_KEY= ``` -### Update Rust, Foundry, and Forge dependencies - -```zsh -make update -``` +Create a `nayms_mnemonic.txt` file and ensure it contains the team mnemonic. -### Prepare the build +### Build Project ```zsh -make prep-build +make build ``` +This will generate the diamond proxy interface, diamond helper library and the abi file. -### Build Project +### Test Project ```zsh -make build +make test ``` -### Formatter and Linter +### Deploy the diamond -Run `yarn` to install `package.json` which includes our formatter and linter. We will switch over to Foundry's sol formatter and linter once released. +Smart contracts in this repository implement the [EIP-2535](https://eips.ethereum.org/EIPS/eip-2535) a.k.a. the diamond standard and uses [Gemforge](https://gemforge.xyz/) for deployment. You can read more about it in the official docs. -## Set your environment variables +A script - `script/gemforge/deploy.js` - is provided as a convenience for handling the Nayms phased deployments flow. You can call this directly or just use `yarn deploy ...` -Check `.env.example` to see some of the environment variables you should have set in `.env` in order to run some of the commands. +Currently supported deployment targets are: -## Current Directory Structure - -```md -. -├── cli-tools -├── script -│   ├── deployment -│   └── utils -├── src -│   ├── diamonds -│   │   ├── nayms -│   │   │   ├── facets -│   │   │   ├── interfaces -│   │   │   └── libs -│   │   └── shared -│   │   ├── facets -│   │   ├── interfaces -│   │   └── libs -│   ├── erc20 -│   └── utils -└── test - ├── defaults - ├── fixtures - └── utils - └── users -``` +- `local`: local anvil node +- `sepolia`: sepolia +- `mainnet`: mainnet +- `baseGoerli`: Base Goerli testnet +- `sepoliaFork`: a local fork of sepolia +- `mainnetFork`: a local for of mainnet -## Solidity Scripting +#### Querying -You can now write scripts with Solidity. +To see how the current deployed Diamond differs from the compiled code for a target: -```zsh -forge script ``` - -Give a valid Alchemy Eth mainnet API key in `.env` ALCHEMY_ETH_MAINNET_API_KEY, then try running: - -```zsh -make swap +yarn query ``` -## Nayms Deployment Flow - -Current deployment flow: +#### Fresh deployments -Simulate the deployment: +To do a fresh deployment to a given [target](https://gemforge.xyz/configuration/targets/): -```zsh -make deploy-sim newDiamond= initNewDiamond= facetAction= facetsToCutIn= deploymentSalt= ``` - -| | | -| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| _newDiamond_ | | -| `true` | Deploy a new Nayms diamond | -| `false` | Read the address from deployedAddresses.json | -| | | -| _initNewDiamond_ | | -| `true` | Deploy a new InitDiamond and call `initialize()` when calling `diamondCut()` | -| `false` | Does not call `initialize()` when calling `diamondCut()` | -| | | -| _facetAction_ | See [`FacetDeploymentAction`](https://github.com/nayms/contracts-v3/tree/main/script/utils/DeploymentHelpers.sol) enum | -| `0` | DeployAllFacets | -| `1` | UpgradeFacetsWithChangesOnly | -| `2` | UpgradeFacetsListedOnly | -| _facetsToCutIn_ | Requires facetAction=`2` | -| `["Facet1","Facet2",...]` | List of facets to cut into the diamond. For example, facetsToCutIn=`"["ACL", "System"]"` will cut in the ACLFacet and SystemFacet. _Note_: It will remove facet methods that do not exist in the "current" facet, replace methods that exist in both the "current" and "previous" facet, and add methods that only exist in the "current" facet. "Current" is referring to the facet in the current repository. | - -Below are several examples on how you would use the smart deploy scripts. - -For a __fresh new deployment__ of the entire project, execute this command: - -```zsh -make deploy-sepolia-sim newDiamond=true initNewDiamond=true facetAction=0 +yarn deploy --fresh ``` -To __upgrade the facets that have been changed__ since the last deployment, run the following: - -```zsh -make deploy-sepolia-sim newDiamond=false initNewDiamond=false facetAction=1 -``` +#### Upgrades -To __upgrade specific set of facets__, run command like this one: +To upgrade a deployment on a target: -```zsh -make deploy-sepolia-sim newDiamond=false initNewDiamond=false facetAction=2 facetsToCutIn="["Market","Entity"]" +``` +yarn deploy --upgrade-start +yarn deploy --upgrade-finish ``` -Include a bytes32 salt to deploy the diamond with a deterministic address. Including a salt will first deploy a contract that is used to predetermine the diamond deployment address. If a salt is not included, then the script will deploy the diamond non-deterministically. Currently, there is a default deployment salt given in the make file. - -> :warning: Examples above are __dry-run__ probes, to actually do a deploy remove the `-sim` sufix from the target name +_Note: For mainnet you will need to enable the upgrade using the MPC wallet. For non-mainnet targets the script will automatically do this for you._ ### Running a Local Node @@ -157,38 +92,28 @@ Following commands are provided for working with `anvil`, to make it more conven | `make anvil-upgrade` | Upgrade deployment of Nayms' contracts on local node | | `make anvil-gtoken` | Deploy `GToken` to local node | | `make anvil-add-supported-external-token` | Add `GToken` as supported external token | +| `make anvil-fork-sepolia`| Fork `Sepolia` test net locally | +| `make anvil-fork-mainnet`| Fork `Mainnet` locally | -> :warning: Anvil state is kept in `anvil.json` file in project root. If this file is not present, node starts fresh and creates this file. In which case you need to do the deployment and setup. +> :warning: Anvil state is kept in `anvil.json` file in project root, except for forks. If this file is not present, node starts fresh and creates this file. In which case you need to do the deployment and setup. -One of the things you will need, to do proper testing with local node, is to deploy an ERC-20 compatible token along with Nayms contracts and make that token a supported external token. Below is aan example how to do that. +One of the things you will need, to do proper testing with local node, is to deploy an ERC-20 compatible token along with Nayms contracts and make that token a supported external token. Below is an example of how to do that. -```zsh -make anvil-gtoken +#### Bootstrapping a local node -make anvil-add-supported-external-token \ - naymsDiamondAddress=0x942757fa0b73257AC3393730dCC59c8Aa15de6f5 \ - externalToken=0x5Dc9485A39f64A5BF0E34904949aF7Cc62EE6Bd7 -``` +When working with local node, there are a few things you might need to do in preparation to be able to actually use it with client applications. As a convenience, a script is provided automating the following tasks. -After making a token supported, you might want to mint some coins to a wallet address to make deposits etc. To mint some coins use `cast` tool from Foundry. +- Deploy the diamond to local node +- Deploy test ERC20 compatible token (`GTOKEN`) to local node +- Make this token a supported external token +- Mint some tokens to `acc1`, `acc2`, `acc3` and `acc4` from the `nayms_mnemonic.txt` -```zsh -cast send 0x5Dc9485A39f64A5BF0E34904949aF7Cc62EE6Bd7 "mint(address,uint256)" \ - '0x2dF0a6dB2F0eF1269bE777C856A7665eeC00649f' '1000000000000000000000000' \ - -r http:\\127.0.0.1:8545 \ - --from 0x2dF0a6dB2F0eF1269bE777C856A7665eeC00649f -``` - -Check balance to confirm previous action was successful +Run it from project root folder against fresh new local node instance, otherwise some steps might fail: ```zsh -cast call 0x5Dc9485A39f64A5BF0E34904949aF7Cc62EE6Bd7 "balanceOf(address)(uint256)" \ - '0x2dF0a6dB2F0eF1269bE777C856A7665eeC00649f' \ - -r http:\\127.0.0.1:8545 +cli-tools/anvil_bootstrap.sh ``` -## Development Flow - ### Output, compare gas snapshots ```zsh @@ -197,7 +122,7 @@ make gas ### Build Troubleshooting Tips -In case you run into an issue of `forge` not being able to find a compatible version of solidity compiler for one of your contracts/scripts, you may want to install the solidity version manager `svm`. To be able to do so, you will need to have [Rust](https://www.rust-lang.org/tools/install) installed on your system and with it the acompanying package manager `cargo`. Once that is done, to install `svm` run the following command: +In case you run into an issue of `forge` not being able to find a compatible version of solidity compiler for one of your contracts/scripts, you may want to install the solidity version manager `svm`. To be able to do so, you will need to have [Rust](https://www.rust-lang.org/tools/install) installed on your system and with it the accompanying package manager `cargo`. Once that is done, to install `svm` run the following command: ```zsh cargo install svm-rs @@ -212,7 +137,7 @@ svm list Make sure the version you need is in this list, or choose the closest one and install it: ```zsh -svm install "0.7.6" +svm install "0.8.20" ``` ### Fork testing diff --git a/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-1697191157.json b/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-1697191157.json new file mode 100644 index 00000000..518d9873 --- /dev/null +++ b/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-1697191157.json @@ -0,0 +1,34 @@ +{ + "transactions": [ + { + "hash": "0x4bce230f0f72d2f180e96483b256d94670fd0b898d0bcb2c94e7a96bc07674e9", + "transactionType": "CALL", + "contractName": "Nayms", + "contractAddress": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2df0a6db2f0ef1269be777c856a7665eec00649f", + "to": "0x7e5462da297440d2a27fe27d1f291cf67202302b", + "gas": "0x13895", + "value": "0x0", + "data": "0x1d5102175d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf6170", + "nonce": "0x26a", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x4bce230f0f72d2f180e96483b256d94670fd0b898d0bcb2c94e7a96bc07674e9" + ], + "returns": {}, + "timestamp": 1697191157, + "chain": 11155111, + "multi": false, + "commit": "13da7ed8" +} \ No newline at end of file diff --git a/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-1697191171.json b/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-1697191171.json new file mode 100644 index 00000000..47377ef7 --- /dev/null +++ b/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-1697191171.json @@ -0,0 +1,63 @@ +{ + "transactions": [ + { + "hash": "0x4bce230f0f72d2f180e96483b256d94670fd0b898d0bcb2c94e7a96bc07674e9", + "transactionType": "CALL", + "contractName": "Nayms", + "contractAddress": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x2df0a6db2f0ef1269be777c856a7665eec00649f", + "to": "0x7e5462da297440d2a27fe27d1f291cf67202302b", + "gas": "0x13895", + "value": "0x0", + "data": "0x1d5102175d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf6170", + "nonce": "0x26a", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x4bce230f0f72d2f180e96483b256d94670fd0b898d0bcb2c94e7a96bc07674e9", + "transactionIndex": "0x5", + "blockHash": "0x3c20bdf9f84b3c0c60dc068bbf2e8b9d1d9c71cc1a639a692b7bbe15e1933f62", + "blockNumber": "0x446356", + "from": "0x2dF0a6dB2F0eF1269bE777C856A7665eeC00649f", + "to": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "cumulativeGasUsed": "0x63f2f", + "gasUsed": "0xe24f", + "contractAddress": null, + "logs": [ + { + "address": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "topics": [ + "0x3a44e179d9e19e4401346b6bded52859fff9aa9543bff59d04f48cd5c86056a1" + ], + "data": "0x5d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf61700000000000000000000000002df0a6db2f0ef1269be777c856a7665eec00649f", + "blockHash": "0x3c20bdf9f84b3c0c60dc068bbf2e8b9d1d9c71cc1a639a692b7bbe15e1933f62", + "blockNumber": "0x446356", + "transactionHash": "0x4bce230f0f72d2f180e96483b256d94670fd0b898d0bcb2c94e7a96bc07674e9", + "transactionIndex": "0x5", + "logIndex": "0x6", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000008000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xbf1e43ec" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1697191171, + "chain": 11155111, + "multi": false, + "commit": "13da7ed8" +} \ No newline at end of file diff --git a/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-latest.json b/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-latest.json index a41ed003..47377ef7 100644 --- a/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-latest.json +++ b/broadcast/S02ScheduleUpgrade.s.sol/11155111/run-latest.json @@ -1,7 +1,7 @@ { "transactions": [ { - "hash": "0x9413ccd62c31b575d0f7f2963dabd638175521985a035a9f132fd48d8bf53277", + "hash": "0x4bce230f0f72d2f180e96483b256d94670fd0b898d0bcb2c94e7a96bc07674e9", "transactionType": "CALL", "contractName": "Nayms", "contractAddress": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", @@ -11,10 +11,10 @@ "type": "0x02", "from": "0x2df0a6db2f0ef1269be777c856a7665eec00649f", "to": "0x7e5462da297440d2a27fe27d1f291cf67202302b", - "gas": "0x14ae7", + "gas": "0x13895", "value": "0x0", - "data": "0x1d5102178781f709a1a5b2d189babd57fcff8be5b679bd06e37a9e0092c5afc6f3e916b1", - "nonce": "0x80", + "data": "0x1d5102175d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf6170", + "nonce": "0x26a", "accessList": [] }, "additionalContracts": [], @@ -23,14 +23,14 @@ ], "receipts": [ { - "transactionHash": "0x9413ccd62c31b575d0f7f2963dabd638175521985a035a9f132fd48d8bf53277", - "transactionIndex": "0x3", - "blockHash": "0x4334f62e5024be5f1f5b0997bcc0045a50be85b944561253310e770436c97954", - "blockNumber": "0x371915", + "transactionHash": "0x4bce230f0f72d2f180e96483b256d94670fd0b898d0bcb2c94e7a96bc07674e9", + "transactionIndex": "0x5", + "blockHash": "0x3c20bdf9f84b3c0c60dc068bbf2e8b9d1d9c71cc1a639a692b7bbe15e1933f62", + "blockNumber": "0x446356", "from": "0x2dF0a6dB2F0eF1269bE777C856A7665eeC00649f", "to": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", - "cumulativeGasUsed": "0x1d85b", - "gasUsed": "0xe243", + "cumulativeGasUsed": "0x63f2f", + "gasUsed": "0xe24f", "contractAddress": null, "logs": [ { @@ -38,26 +38,26 @@ "topics": [ "0x3a44e179d9e19e4401346b6bded52859fff9aa9543bff59d04f48cd5c86056a1" ], - "data": "0x8781f709a1a5b2d189babd57fcff8be5b679bd06e37a9e0092c5afc6f3e916b10000000000000000000000002df0a6db2f0ef1269be777c856a7665eec00649f", - "blockHash": "0x4334f62e5024be5f1f5b0997bcc0045a50be85b944561253310e770436c97954", - "blockNumber": "0x371915", - "transactionHash": "0x9413ccd62c31b575d0f7f2963dabd638175521985a035a9f132fd48d8bf53277", - "transactionIndex": "0x3", - "logIndex": "0x0", + "data": "0x5d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf61700000000000000000000000002df0a6db2f0ef1269be777c856a7665eec00649f", + "blockHash": "0x3c20bdf9f84b3c0c60dc068bbf2e8b9d1d9c71cc1a639a692b7bbe15e1933f62", + "blockNumber": "0x446356", + "transactionHash": "0x4bce230f0f72d2f180e96483b256d94670fd0b898d0bcb2c94e7a96bc07674e9", + "transactionIndex": "0x5", + "logIndex": "0x6", "removed": false } ], "status": "0x1", "logsBloom": "0x00000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000008000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d05e08" + "effectiveGasPrice": "0xbf1e43ec" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1685735198, + "timestamp": 1697191171, "chain": 11155111, "multi": false, - "commit": "b719120" + "commit": "13da7ed8" } \ No newline at end of file diff --git a/broadcast/S03UpgradeDiamond.s.sol/11155111/run-1697191375.json b/broadcast/S03UpgradeDiamond.s.sol/11155111/run-1697191375.json new file mode 100644 index 00000000..b6eb3a28 --- /dev/null +++ b/broadcast/S03UpgradeDiamond.s.sol/11155111/run-1697191375.json @@ -0,0 +1,34 @@ +{ + "transactions": [ + { + "hash": "0x515d130f2c6ead880d70567e1f9fff871218188dc51b0cacbe13eccc3fb66dba", + "transactionType": "CALL", + "contractName": "Nayms", + "contractAddress": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "to": "0x7e5462da297440d2a27fe27d1f291cf67202302b", + "gas": "0xfdb9b", + "value": "0x0", + "data": "0x1f931c1c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001380000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000e400000000000000000000000000000000000000000000000000000000000000f60000000000000000000000000000000000000000000000000000000000000114000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000538812c252058083aa2b13d425f11610c404c2500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a5e1ac8fa000000000000000000000000000000000000000000000000000000001219dee200000000000000000000000000000000000000000000000000000000af76f0460000000000000000000000000000000000000000000000000000000047c0748300000000000000000000000000000000000000000000000000000000d774b4e300000000000000000000000000000000000000000000000000000000c8422402000000000000000000000000000000000000000000000000000000007273e79600000000000000000000000000000000000000000000000000000000c1b2bc96000000000000000000000000000000000000000000000000000000006362aeb400000000000000000000000000000000000000000000000000000000ff3406ce000000000000000000000000000000000000000000000000000000000000000000000000000000000538812c252058083aa2b13d425f11610c404c25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001373df69400000000000000000000000000000000000000000000000000000000000000000000000000000000fb745de4fe187b5ab18f0e5afb00ca38bc561c7100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000fce498e8400000000000000000000000000000000000000000000000000000000cb42950100000000000000000000000000000000000000000000000000000000e9f0273c00000000000000000000000000000000000000000000000000000000bdd2620a00000000000000000000000000000000000000000000000000000000eb75c8e800000000000000000000000000000000000000000000000000000000e6a19df200000000000000000000000000000000000000000000000000000000a62caf8200000000000000000000000000000000000000000000000000000000a006928900000000000000000000000000000000000000000000000000000000a246e7a8000000000000000000000000000000000000000000000000000000003453182800000000000000000000000000000000000000000000000000000000f1ebc81000000000000000000000000000000000000000000000000000000000ebc526dc000000000000000000000000000000000000000000000000000000005c74d6a4000000000000000000000000000000000000000000000000000000007bf96b68000000000000000000000000000000000000000000000000000000007f09d08500000000000000000000000000000000000000000000000000000000000000000000000000000000052caef4aac9319bb868e2a7f532edd6a6fbd78800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a04e2e5000000000000000000000000000000000000000000000000000000000078e890ba00000000000000000000000000000000000000000000000000000000f17d17f400000000000000000000000000000000000000000000000000000000edd2133b00000000000000000000000000000000000000000000000000000000a1a2e295000000000000000000000000000000000000000000000000000000004980f2880000000000000000000000000000000000000000000000000000000010b4955d00000000000000000000000000000000000000000000000000000000a2e4569b0000000000000000000000000000000000000000000000000000000073abdfa50000000000000000000000000000000000000000000000000000000060f58edf0000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004337781ea000000000000000000000000000000000000000000000000000000001d5102170000000000000000000000000000000000000000000000000000000022f153db00000000000000000000000000000000000000000000000000000000371d62440000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002e13b9b140000000000000000000000000000000000000000000000000000000010a2bbed00000000000000000000000000000000000000000000000000000000000000000000000000000000194a3fdc437b5398e4f334940abbe278491d1378000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000008012ee17b00000000000000000000000000000000000000000000000000000000ef706adf000000000000000000000000000000000000000000000000000000009df00480000000000000000000000000000000000000000000000000000000004c8198dc0000000000000000000000000000000000000000000000000000000059e148fc00000000000000000000000000000000000000000000000000000000810a374d000000000000000000000000000000000000000000000000000000004579268a000000000000000000000000000000000000000000000000000000008d81a1d300000000000000000000000000000000000000000000000000000000000000000000000000000000abb567184419ec38dc3631c765dbae503b51e1ca00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000270a082310000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000071add96f60000000000000000000000000000000000000000000000000000000023eaabe30000000000000000000000000000000000000000000000000000000000bae17300000000000000000000000000000000000000000000000000000000f3253b5f00000000000000000000000000000000000000000000000000000000c3ab48cb00000000000000000000000000000000000000000000000000000000e8b3fb3c000000000000000000000000000000000000000000000000000000007d29260500000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010a27162a00000000000000000000000000000000000000000000000000000000000000000000000000000000217c1d6d6a72925918a644d67dcb0c3760b81e0800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000553733f9700000000000000000000000000000000000000000000000000000000cf0ccf9e00000000000000000000000000000000000000000000000000000000524d8dd500000000000000000000000000000000000000000000000000000000cfb51928000000000000000000000000000000000000000000000000000000007dfcdf2a000000000000000000000000000000000000000000000000000000000000000000000000000000006254efd84ce152306448e2d10c4df7dce6c9976500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b7baa1dde00000000000000000000000000000000000000000000000000000000d588b132000000000000000000000000000000000000000000000000000000005c92330100000000000000000000000000000000000000000000000000000000c978758900000000000000000000000000000000000000000000000000000000e208f10a00000000000000000000000000000000000000000000000000000000ec7a377000000000000000000000000000000000000000000000000000000000a6cd857d00000000000000000000000000000000000000000000000000000000aa47d5cb00000000000000000000000000000000000000000000000000000000ad747f2f0000000000000000000000000000000000000000000000000000000033f6dfd8000000000000000000000000000000000000000000000000000000001ed7db65000000000000000000000000000000000000000000000000000000000000000000000000000000008fe69c524112f080a15d409f7c68b562485412660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000029bda86780000000000000000000000000000000000000000000000000000000013b747600000000000000000000000000000000000000000000000000000000000000000000000000000000065c37f11879ab9abab518457e665c45aaf074db70000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000043f1b887f0000000000000000000000000000000000000000000000000000000053b66f36000000000000000000000000000000000000000000000000000000009cb481b200000000000000000000000000000000000000000000000000000000afab5f15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x9f", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x515d130f2c6ead880d70567e1f9fff871218188dc51b0cacbe13eccc3fb66dba" + ], + "returns": {}, + "timestamp": 1697191375, + "chain": 11155111, + "multi": false, + "commit": "13da7ed8" +} \ No newline at end of file diff --git a/broadcast/S03UpgradeDiamond.s.sol/11155111/run-1697191382.json b/broadcast/S03UpgradeDiamond.s.sol/11155111/run-1697191382.json new file mode 100644 index 00000000..5aeae21b --- /dev/null +++ b/broadcast/S03UpgradeDiamond.s.sol/11155111/run-1697191382.json @@ -0,0 +1,63 @@ +{ + "transactions": [ + { + "hash": "0x515d130f2c6ead880d70567e1f9fff871218188dc51b0cacbe13eccc3fb66dba", + "transactionType": "CALL", + "contractName": "Nayms", + "contractAddress": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "to": "0x7e5462da297440d2a27fe27d1f291cf67202302b", + "gas": "0xfdb9b", + "value": "0x0", + "data": "0x1f931c1c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001380000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000e400000000000000000000000000000000000000000000000000000000000000f60000000000000000000000000000000000000000000000000000000000000114000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000538812c252058083aa2b13d425f11610c404c2500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a5e1ac8fa000000000000000000000000000000000000000000000000000000001219dee200000000000000000000000000000000000000000000000000000000af76f0460000000000000000000000000000000000000000000000000000000047c0748300000000000000000000000000000000000000000000000000000000d774b4e300000000000000000000000000000000000000000000000000000000c8422402000000000000000000000000000000000000000000000000000000007273e79600000000000000000000000000000000000000000000000000000000c1b2bc96000000000000000000000000000000000000000000000000000000006362aeb400000000000000000000000000000000000000000000000000000000ff3406ce000000000000000000000000000000000000000000000000000000000000000000000000000000000538812c252058083aa2b13d425f11610c404c25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001373df69400000000000000000000000000000000000000000000000000000000000000000000000000000000fb745de4fe187b5ab18f0e5afb00ca38bc561c7100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000fce498e8400000000000000000000000000000000000000000000000000000000cb42950100000000000000000000000000000000000000000000000000000000e9f0273c00000000000000000000000000000000000000000000000000000000bdd2620a00000000000000000000000000000000000000000000000000000000eb75c8e800000000000000000000000000000000000000000000000000000000e6a19df200000000000000000000000000000000000000000000000000000000a62caf8200000000000000000000000000000000000000000000000000000000a006928900000000000000000000000000000000000000000000000000000000a246e7a8000000000000000000000000000000000000000000000000000000003453182800000000000000000000000000000000000000000000000000000000f1ebc81000000000000000000000000000000000000000000000000000000000ebc526dc000000000000000000000000000000000000000000000000000000005c74d6a4000000000000000000000000000000000000000000000000000000007bf96b68000000000000000000000000000000000000000000000000000000007f09d08500000000000000000000000000000000000000000000000000000000000000000000000000000000052caef4aac9319bb868e2a7f532edd6a6fbd78800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a04e2e5000000000000000000000000000000000000000000000000000000000078e890ba00000000000000000000000000000000000000000000000000000000f17d17f400000000000000000000000000000000000000000000000000000000edd2133b00000000000000000000000000000000000000000000000000000000a1a2e295000000000000000000000000000000000000000000000000000000004980f2880000000000000000000000000000000000000000000000000000000010b4955d00000000000000000000000000000000000000000000000000000000a2e4569b0000000000000000000000000000000000000000000000000000000073abdfa50000000000000000000000000000000000000000000000000000000060f58edf0000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004337781ea000000000000000000000000000000000000000000000000000000001d5102170000000000000000000000000000000000000000000000000000000022f153db00000000000000000000000000000000000000000000000000000000371d62440000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002e13b9b140000000000000000000000000000000000000000000000000000000010a2bbed00000000000000000000000000000000000000000000000000000000000000000000000000000000194a3fdc437b5398e4f334940abbe278491d1378000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000008012ee17b00000000000000000000000000000000000000000000000000000000ef706adf000000000000000000000000000000000000000000000000000000009df00480000000000000000000000000000000000000000000000000000000004c8198dc0000000000000000000000000000000000000000000000000000000059e148fc00000000000000000000000000000000000000000000000000000000810a374d000000000000000000000000000000000000000000000000000000004579268a000000000000000000000000000000000000000000000000000000008d81a1d300000000000000000000000000000000000000000000000000000000000000000000000000000000abb567184419ec38dc3631c765dbae503b51e1ca00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000270a082310000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000071add96f60000000000000000000000000000000000000000000000000000000023eaabe30000000000000000000000000000000000000000000000000000000000bae17300000000000000000000000000000000000000000000000000000000f3253b5f00000000000000000000000000000000000000000000000000000000c3ab48cb00000000000000000000000000000000000000000000000000000000e8b3fb3c000000000000000000000000000000000000000000000000000000007d29260500000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010a27162a00000000000000000000000000000000000000000000000000000000000000000000000000000000217c1d6d6a72925918a644d67dcb0c3760b81e0800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000553733f9700000000000000000000000000000000000000000000000000000000cf0ccf9e00000000000000000000000000000000000000000000000000000000524d8dd500000000000000000000000000000000000000000000000000000000cfb51928000000000000000000000000000000000000000000000000000000007dfcdf2a000000000000000000000000000000000000000000000000000000000000000000000000000000006254efd84ce152306448e2d10c4df7dce6c9976500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b7baa1dde00000000000000000000000000000000000000000000000000000000d588b132000000000000000000000000000000000000000000000000000000005c92330100000000000000000000000000000000000000000000000000000000c978758900000000000000000000000000000000000000000000000000000000e208f10a00000000000000000000000000000000000000000000000000000000ec7a377000000000000000000000000000000000000000000000000000000000a6cd857d00000000000000000000000000000000000000000000000000000000aa47d5cb00000000000000000000000000000000000000000000000000000000ad747f2f0000000000000000000000000000000000000000000000000000000033f6dfd8000000000000000000000000000000000000000000000000000000001ed7db65000000000000000000000000000000000000000000000000000000000000000000000000000000008fe69c524112f080a15d409f7c68b562485412660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000029bda86780000000000000000000000000000000000000000000000000000000013b747600000000000000000000000000000000000000000000000000000000000000000000000000000000065c37f11879ab9abab518457e665c45aaf074db70000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000043f1b887f0000000000000000000000000000000000000000000000000000000053b66f36000000000000000000000000000000000000000000000000000000009cb481b200000000000000000000000000000000000000000000000000000000afab5f15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x9f", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x515d130f2c6ead880d70567e1f9fff871218188dc51b0cacbe13eccc3fb66dba", + "transactionIndex": "0x5", + "blockHash": "0x83ab8ab80973b6d8c0954516089feaa4cb500403b859364a72bfdfaf4dc3e33a", + "blockNumber": "0x446368", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "cumulativeGasUsed": "0x1fc0cd", + "gasUsed": "0xb7b15", + "contractAddress": null, + "logs": [ + { + "address": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "topics": [ + "0x8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001380000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000e400000000000000000000000000000000000000000000000000000000000000f60000000000000000000000000000000000000000000000000000000000000114000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000538812c252058083aa2b13d425f11610c404c2500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a5e1ac8fa000000000000000000000000000000000000000000000000000000001219dee200000000000000000000000000000000000000000000000000000000af76f0460000000000000000000000000000000000000000000000000000000047c0748300000000000000000000000000000000000000000000000000000000d774b4e300000000000000000000000000000000000000000000000000000000c8422402000000000000000000000000000000000000000000000000000000007273e79600000000000000000000000000000000000000000000000000000000c1b2bc96000000000000000000000000000000000000000000000000000000006362aeb400000000000000000000000000000000000000000000000000000000ff3406ce000000000000000000000000000000000000000000000000000000000000000000000000000000000538812c252058083aa2b13d425f11610c404c25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001373df69400000000000000000000000000000000000000000000000000000000000000000000000000000000fb745de4fe187b5ab18f0e5afb00ca38bc561c7100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000fce498e8400000000000000000000000000000000000000000000000000000000cb42950100000000000000000000000000000000000000000000000000000000e9f0273c00000000000000000000000000000000000000000000000000000000bdd2620a00000000000000000000000000000000000000000000000000000000eb75c8e800000000000000000000000000000000000000000000000000000000e6a19df200000000000000000000000000000000000000000000000000000000a62caf8200000000000000000000000000000000000000000000000000000000a006928900000000000000000000000000000000000000000000000000000000a246e7a8000000000000000000000000000000000000000000000000000000003453182800000000000000000000000000000000000000000000000000000000f1ebc81000000000000000000000000000000000000000000000000000000000ebc526dc000000000000000000000000000000000000000000000000000000005c74d6a4000000000000000000000000000000000000000000000000000000007bf96b68000000000000000000000000000000000000000000000000000000007f09d08500000000000000000000000000000000000000000000000000000000000000000000000000000000052caef4aac9319bb868e2a7f532edd6a6fbd78800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a04e2e5000000000000000000000000000000000000000000000000000000000078e890ba00000000000000000000000000000000000000000000000000000000f17d17f400000000000000000000000000000000000000000000000000000000edd2133b00000000000000000000000000000000000000000000000000000000a1a2e295000000000000000000000000000000000000000000000000000000004980f2880000000000000000000000000000000000000000000000000000000010b4955d00000000000000000000000000000000000000000000000000000000a2e4569b0000000000000000000000000000000000000000000000000000000073abdfa50000000000000000000000000000000000000000000000000000000060f58edf0000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004337781ea000000000000000000000000000000000000000000000000000000001d5102170000000000000000000000000000000000000000000000000000000022f153db00000000000000000000000000000000000000000000000000000000371d62440000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002e13b9b140000000000000000000000000000000000000000000000000000000010a2bbed00000000000000000000000000000000000000000000000000000000000000000000000000000000194a3fdc437b5398e4f334940abbe278491d1378000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000008012ee17b00000000000000000000000000000000000000000000000000000000ef706adf000000000000000000000000000000000000000000000000000000009df00480000000000000000000000000000000000000000000000000000000004c8198dc0000000000000000000000000000000000000000000000000000000059e148fc00000000000000000000000000000000000000000000000000000000810a374d000000000000000000000000000000000000000000000000000000004579268a000000000000000000000000000000000000000000000000000000008d81a1d300000000000000000000000000000000000000000000000000000000000000000000000000000000abb567184419ec38dc3631c765dbae503b51e1ca00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000270a082310000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000071add96f60000000000000000000000000000000000000000000000000000000023eaabe30000000000000000000000000000000000000000000000000000000000bae17300000000000000000000000000000000000000000000000000000000f3253b5f00000000000000000000000000000000000000000000000000000000c3ab48cb00000000000000000000000000000000000000000000000000000000e8b3fb3c000000000000000000000000000000000000000000000000000000007d29260500000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010a27162a00000000000000000000000000000000000000000000000000000000000000000000000000000000217c1d6d6a72925918a644d67dcb0c3760b81e0800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000553733f9700000000000000000000000000000000000000000000000000000000cf0ccf9e00000000000000000000000000000000000000000000000000000000524d8dd500000000000000000000000000000000000000000000000000000000cfb51928000000000000000000000000000000000000000000000000000000007dfcdf2a000000000000000000000000000000000000000000000000000000000000000000000000000000006254efd84ce152306448e2d10c4df7dce6c9976500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b7baa1dde00000000000000000000000000000000000000000000000000000000d588b132000000000000000000000000000000000000000000000000000000005c92330100000000000000000000000000000000000000000000000000000000c978758900000000000000000000000000000000000000000000000000000000e208f10a00000000000000000000000000000000000000000000000000000000ec7a377000000000000000000000000000000000000000000000000000000000a6cd857d00000000000000000000000000000000000000000000000000000000aa47d5cb00000000000000000000000000000000000000000000000000000000ad747f2f0000000000000000000000000000000000000000000000000000000033f6dfd8000000000000000000000000000000000000000000000000000000001ed7db65000000000000000000000000000000000000000000000000000000000000000000000000000000008fe69c524112f080a15d409f7c68b562485412660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000029bda86780000000000000000000000000000000000000000000000000000000013b747600000000000000000000000000000000000000000000000000000000000000000000000000000000065c37f11879ab9abab518457e665c45aaf074db70000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000043f1b887f0000000000000000000000000000000000000000000000000000000053b66f36000000000000000000000000000000000000000000000000000000009cb481b200000000000000000000000000000000000000000000000000000000afab5f15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x83ab8ab80973b6d8c0954516089feaa4cb500403b859364a72bfdfaf4dc3e33a", + "blockNumber": "0x446368", + "transactionHash": "0x515d130f2c6ead880d70567e1f9fff871218188dc51b0cacbe13eccc3fb66dba", + "transactionIndex": "0x5", + "logIndex": "0x8", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000001000000000800020000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xbf8233b7" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1697191382, + "chain": 11155111, + "multi": false, + "commit": "13da7ed8" +} \ No newline at end of file diff --git a/broadcast/S03UpgradeDiamond.s.sol/11155111/run-latest.json b/broadcast/S03UpgradeDiamond.s.sol/11155111/run-latest.json index 0d8729b0..5aeae21b 100644 --- a/broadcast/S03UpgradeDiamond.s.sol/11155111/run-latest.json +++ b/broadcast/S03UpgradeDiamond.s.sol/11155111/run-latest.json @@ -1,7 +1,7 @@ { "transactions": [ { - "hash": "0x2304a665ee1b602e0aae541fa26282dbb88c389a86b68c3553afbc6bf9c69f48", + "hash": "0x515d130f2c6ead880d70567e1f9fff871218188dc51b0cacbe13eccc3fb66dba", "transactionType": "CALL", "contractName": "Nayms", "contractAddress": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", @@ -11,10 +11,10 @@ "type": "0x02", "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", "to": "0x7e5462da297440d2a27fe27d1f291cf67202302b", - "gas": "0xb0639", + "gas": "0xfdb9b", "value": "0x0", - "data": "0x1f931c1c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ea0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000b200000000000000000000000000000000000000000000000000000000000000bc00000000000000000000000000000000000000000000000000000000000000c600000000000000000000000000000000000000000000000000000000000000d20000000000000000000000000f62a5c1be8425ea1a7d9542c2ec996e2a71ec3e300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000fce498e8400000000000000000000000000000000000000000000000000000000cb42950100000000000000000000000000000000000000000000000000000000e9f0273c00000000000000000000000000000000000000000000000000000000bdd2620a00000000000000000000000000000000000000000000000000000000eb75c8e800000000000000000000000000000000000000000000000000000000e6a19df200000000000000000000000000000000000000000000000000000000a62caf8200000000000000000000000000000000000000000000000000000000a006928900000000000000000000000000000000000000000000000000000000a246e7a8000000000000000000000000000000000000000000000000000000003453182800000000000000000000000000000000000000000000000000000000f1ebc81000000000000000000000000000000000000000000000000000000000ebc526dc000000000000000000000000000000000000000000000000000000005c74d6a4000000000000000000000000000000000000000000000000000000007bf96b68000000000000000000000000000000000000000000000000000000007f09d08500000000000000000000000000000000000000000000000000000000000000000000000000000000299244282a8cb0216283913a4732cea1bdecf39200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a04e2e5000000000000000000000000000000000000000000000000000000000078e890ba00000000000000000000000000000000000000000000000000000000f17d17f400000000000000000000000000000000000000000000000000000000edd2133b00000000000000000000000000000000000000000000000000000000a1a2e295000000000000000000000000000000000000000000000000000000004980f2880000000000000000000000000000000000000000000000000000000010b4955d00000000000000000000000000000000000000000000000000000000a2e4569b0000000000000000000000000000000000000000000000000000000073abdfa50000000000000000000000000000000000000000000000000000000060f58edf0000000000000000000000000000000000000000000000000000000000000000000000000000000054251cb32fcbdf02379984c0f34129d8d77eb53c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000008012ee17b00000000000000000000000000000000000000000000000000000000ef706adf000000000000000000000000000000000000000000000000000000009df00480000000000000000000000000000000000000000000000000000000004c8198dc0000000000000000000000000000000000000000000000000000000059e148fc00000000000000000000000000000000000000000000000000000000810a374d000000000000000000000000000000000000000000000000000000004579268a000000000000000000000000000000000000000000000000000000008d81a1d30000000000000000000000000000000000000000000000000000000000000000000000000000000080238be1cb78c0b701e1ad7d9815ac91d97930490000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000071add96f60000000000000000000000000000000000000000000000000000000023eaabe30000000000000000000000000000000000000000000000000000000000bae17300000000000000000000000000000000000000000000000000000000f3253b5f00000000000000000000000000000000000000000000000000000000c3ab48cb00000000000000000000000000000000000000000000000000000000e8b3fb3c000000000000000000000000000000000000000000000000000000007d292605000000000000000000000000000000000000000000000000000000000000000000000000000000009bf85ab79b93d2ba1321beb40e2803fc9a81910800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000553733f9700000000000000000000000000000000000000000000000000000000cf0ccf9e00000000000000000000000000000000000000000000000000000000524d8dd500000000000000000000000000000000000000000000000000000000cfb51928000000000000000000000000000000000000000000000000000000007dfcdf2a00000000000000000000000000000000000000000000000000000000000000000000000000000000bf7eb23801d1ede9fd2f3e8bfb5c0a5370a9f10300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a7baa1dde00000000000000000000000000000000000000000000000000000000d588b132000000000000000000000000000000000000000000000000000000005c92330100000000000000000000000000000000000000000000000000000000c978758900000000000000000000000000000000000000000000000000000000e208f10a00000000000000000000000000000000000000000000000000000000a6cd857d00000000000000000000000000000000000000000000000000000000aa47d5cb00000000000000000000000000000000000000000000000000000000ad747f2f0000000000000000000000000000000000000000000000000000000033f6dfd8000000000000000000000000000000000000000000000000000000001ed7db6500000000000000000000000000000000000000000000000000000000000000000000000000000000bf7eb23801d1ede9fd2f3e8bfb5c0a5370a9f103000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001ec7a3770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001bf9f73110000000000000000000000000000000000000000000000000000000000000000000000000000000050b4b25fd93ec0ef55a369247b90684e69d5e95d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000029bda86780000000000000000000000000000000000000000000000000000000013b7476000000000000000000000000000000000000000000000000000000000000000000000000000000000a6bdec732f857522338a29d0dd508abe33eb3b8f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000043f1b887f0000000000000000000000000000000000000000000000000000000053b66f36000000000000000000000000000000000000000000000000000000009cb481b200000000000000000000000000000000000000000000000000000000afab5f15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x93", + "data": "0x1f931c1c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001380000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000e400000000000000000000000000000000000000000000000000000000000000f60000000000000000000000000000000000000000000000000000000000000114000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000538812c252058083aa2b13d425f11610c404c2500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a5e1ac8fa000000000000000000000000000000000000000000000000000000001219dee200000000000000000000000000000000000000000000000000000000af76f0460000000000000000000000000000000000000000000000000000000047c0748300000000000000000000000000000000000000000000000000000000d774b4e300000000000000000000000000000000000000000000000000000000c8422402000000000000000000000000000000000000000000000000000000007273e79600000000000000000000000000000000000000000000000000000000c1b2bc96000000000000000000000000000000000000000000000000000000006362aeb400000000000000000000000000000000000000000000000000000000ff3406ce000000000000000000000000000000000000000000000000000000000000000000000000000000000538812c252058083aa2b13d425f11610c404c25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001373df69400000000000000000000000000000000000000000000000000000000000000000000000000000000fb745de4fe187b5ab18f0e5afb00ca38bc561c7100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000fce498e8400000000000000000000000000000000000000000000000000000000cb42950100000000000000000000000000000000000000000000000000000000e9f0273c00000000000000000000000000000000000000000000000000000000bdd2620a00000000000000000000000000000000000000000000000000000000eb75c8e800000000000000000000000000000000000000000000000000000000e6a19df200000000000000000000000000000000000000000000000000000000a62caf8200000000000000000000000000000000000000000000000000000000a006928900000000000000000000000000000000000000000000000000000000a246e7a8000000000000000000000000000000000000000000000000000000003453182800000000000000000000000000000000000000000000000000000000f1ebc81000000000000000000000000000000000000000000000000000000000ebc526dc000000000000000000000000000000000000000000000000000000005c74d6a4000000000000000000000000000000000000000000000000000000007bf96b68000000000000000000000000000000000000000000000000000000007f09d08500000000000000000000000000000000000000000000000000000000000000000000000000000000052caef4aac9319bb868e2a7f532edd6a6fbd78800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a04e2e5000000000000000000000000000000000000000000000000000000000078e890ba00000000000000000000000000000000000000000000000000000000f17d17f400000000000000000000000000000000000000000000000000000000edd2133b00000000000000000000000000000000000000000000000000000000a1a2e295000000000000000000000000000000000000000000000000000000004980f2880000000000000000000000000000000000000000000000000000000010b4955d00000000000000000000000000000000000000000000000000000000a2e4569b0000000000000000000000000000000000000000000000000000000073abdfa50000000000000000000000000000000000000000000000000000000060f58edf0000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004337781ea000000000000000000000000000000000000000000000000000000001d5102170000000000000000000000000000000000000000000000000000000022f153db00000000000000000000000000000000000000000000000000000000371d62440000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002e13b9b140000000000000000000000000000000000000000000000000000000010a2bbed00000000000000000000000000000000000000000000000000000000000000000000000000000000194a3fdc437b5398e4f334940abbe278491d1378000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000008012ee17b00000000000000000000000000000000000000000000000000000000ef706adf000000000000000000000000000000000000000000000000000000009df00480000000000000000000000000000000000000000000000000000000004c8198dc0000000000000000000000000000000000000000000000000000000059e148fc00000000000000000000000000000000000000000000000000000000810a374d000000000000000000000000000000000000000000000000000000004579268a000000000000000000000000000000000000000000000000000000008d81a1d300000000000000000000000000000000000000000000000000000000000000000000000000000000abb567184419ec38dc3631c765dbae503b51e1ca00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000270a082310000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000071add96f60000000000000000000000000000000000000000000000000000000023eaabe30000000000000000000000000000000000000000000000000000000000bae17300000000000000000000000000000000000000000000000000000000f3253b5f00000000000000000000000000000000000000000000000000000000c3ab48cb00000000000000000000000000000000000000000000000000000000e8b3fb3c000000000000000000000000000000000000000000000000000000007d29260500000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010a27162a00000000000000000000000000000000000000000000000000000000000000000000000000000000217c1d6d6a72925918a644d67dcb0c3760b81e0800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000553733f9700000000000000000000000000000000000000000000000000000000cf0ccf9e00000000000000000000000000000000000000000000000000000000524d8dd500000000000000000000000000000000000000000000000000000000cfb51928000000000000000000000000000000000000000000000000000000007dfcdf2a000000000000000000000000000000000000000000000000000000000000000000000000000000006254efd84ce152306448e2d10c4df7dce6c9976500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b7baa1dde00000000000000000000000000000000000000000000000000000000d588b132000000000000000000000000000000000000000000000000000000005c92330100000000000000000000000000000000000000000000000000000000c978758900000000000000000000000000000000000000000000000000000000e208f10a00000000000000000000000000000000000000000000000000000000ec7a377000000000000000000000000000000000000000000000000000000000a6cd857d00000000000000000000000000000000000000000000000000000000aa47d5cb00000000000000000000000000000000000000000000000000000000ad747f2f0000000000000000000000000000000000000000000000000000000033f6dfd8000000000000000000000000000000000000000000000000000000001ed7db65000000000000000000000000000000000000000000000000000000000000000000000000000000008fe69c524112f080a15d409f7c68b562485412660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000029bda86780000000000000000000000000000000000000000000000000000000013b747600000000000000000000000000000000000000000000000000000000000000000000000000000000065c37f11879ab9abab518457e665c45aaf074db70000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000043f1b887f0000000000000000000000000000000000000000000000000000000053b66f36000000000000000000000000000000000000000000000000000000009cb481b200000000000000000000000000000000000000000000000000000000afab5f15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x9f", "accessList": [] }, "additionalContracts": [], @@ -23,14 +23,14 @@ ], "receipts": [ { - "transactionHash": "0x2304a665ee1b602e0aae541fa26282dbb88c389a86b68c3553afbc6bf9c69f48", - "transactionIndex": "0x1", - "blockHash": "0x7139e747a579cde6786ffc1f79d2a3779671a79a3095fd79ff0f158056fb420a", - "blockNumber": "0x421e0e", + "transactionHash": "0x515d130f2c6ead880d70567e1f9fff871218188dc51b0cacbe13eccc3fb66dba", + "transactionIndex": "0x5", + "blockHash": "0x83ab8ab80973b6d8c0954516089feaa4cb500403b859364a72bfdfaf4dc3e33a", + "blockNumber": "0x446368", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", - "cumulativeGasUsed": "0x923ea", - "gasUsed": "0x7fb3e", + "cumulativeGasUsed": "0x1fc0cd", + "gasUsed": "0xb7b15", "contractAddress": null, "logs": [ { @@ -38,26 +38,26 @@ "topics": [ "0x8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673" ], - "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ea0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000009600000000000000000000000000000000000000000000000000000000000000b200000000000000000000000000000000000000000000000000000000000000bc00000000000000000000000000000000000000000000000000000000000000c600000000000000000000000000000000000000000000000000000000000000d20000000000000000000000000f62a5c1be8425ea1a7d9542c2ec996e2a71ec3e300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000fce498e8400000000000000000000000000000000000000000000000000000000cb42950100000000000000000000000000000000000000000000000000000000e9f0273c00000000000000000000000000000000000000000000000000000000bdd2620a00000000000000000000000000000000000000000000000000000000eb75c8e800000000000000000000000000000000000000000000000000000000e6a19df200000000000000000000000000000000000000000000000000000000a62caf8200000000000000000000000000000000000000000000000000000000a006928900000000000000000000000000000000000000000000000000000000a246e7a8000000000000000000000000000000000000000000000000000000003453182800000000000000000000000000000000000000000000000000000000f1ebc81000000000000000000000000000000000000000000000000000000000ebc526dc000000000000000000000000000000000000000000000000000000005c74d6a4000000000000000000000000000000000000000000000000000000007bf96b68000000000000000000000000000000000000000000000000000000007f09d08500000000000000000000000000000000000000000000000000000000000000000000000000000000299244282a8cb0216283913a4732cea1bdecf39200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a04e2e5000000000000000000000000000000000000000000000000000000000078e890ba00000000000000000000000000000000000000000000000000000000f17d17f400000000000000000000000000000000000000000000000000000000edd2133b00000000000000000000000000000000000000000000000000000000a1a2e295000000000000000000000000000000000000000000000000000000004980f2880000000000000000000000000000000000000000000000000000000010b4955d00000000000000000000000000000000000000000000000000000000a2e4569b0000000000000000000000000000000000000000000000000000000073abdfa50000000000000000000000000000000000000000000000000000000060f58edf0000000000000000000000000000000000000000000000000000000000000000000000000000000054251cb32fcbdf02379984c0f34129d8d77eb53c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000008012ee17b00000000000000000000000000000000000000000000000000000000ef706adf000000000000000000000000000000000000000000000000000000009df00480000000000000000000000000000000000000000000000000000000004c8198dc0000000000000000000000000000000000000000000000000000000059e148fc00000000000000000000000000000000000000000000000000000000810a374d000000000000000000000000000000000000000000000000000000004579268a000000000000000000000000000000000000000000000000000000008d81a1d30000000000000000000000000000000000000000000000000000000000000000000000000000000080238be1cb78c0b701e1ad7d9815ac91d97930490000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000071add96f60000000000000000000000000000000000000000000000000000000023eaabe30000000000000000000000000000000000000000000000000000000000bae17300000000000000000000000000000000000000000000000000000000f3253b5f00000000000000000000000000000000000000000000000000000000c3ab48cb00000000000000000000000000000000000000000000000000000000e8b3fb3c000000000000000000000000000000000000000000000000000000007d292605000000000000000000000000000000000000000000000000000000000000000000000000000000009bf85ab79b93d2ba1321beb40e2803fc9a81910800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000553733f9700000000000000000000000000000000000000000000000000000000cf0ccf9e00000000000000000000000000000000000000000000000000000000524d8dd500000000000000000000000000000000000000000000000000000000cfb51928000000000000000000000000000000000000000000000000000000007dfcdf2a00000000000000000000000000000000000000000000000000000000000000000000000000000000bf7eb23801d1ede9fd2f3e8bfb5c0a5370a9f10300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a7baa1dde00000000000000000000000000000000000000000000000000000000d588b132000000000000000000000000000000000000000000000000000000005c92330100000000000000000000000000000000000000000000000000000000c978758900000000000000000000000000000000000000000000000000000000e208f10a00000000000000000000000000000000000000000000000000000000a6cd857d00000000000000000000000000000000000000000000000000000000aa47d5cb00000000000000000000000000000000000000000000000000000000ad747f2f0000000000000000000000000000000000000000000000000000000033f6dfd8000000000000000000000000000000000000000000000000000000001ed7db6500000000000000000000000000000000000000000000000000000000000000000000000000000000bf7eb23801d1ede9fd2f3e8bfb5c0a5370a9f103000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001ec7a3770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001bf9f73110000000000000000000000000000000000000000000000000000000000000000000000000000000050b4b25fd93ec0ef55a369247b90684e69d5e95d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000029bda86780000000000000000000000000000000000000000000000000000000013b7476000000000000000000000000000000000000000000000000000000000000000000000000000000000a6bdec732f857522338a29d0dd508abe33eb3b8f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000043f1b887f0000000000000000000000000000000000000000000000000000000053b66f36000000000000000000000000000000000000000000000000000000009cb481b200000000000000000000000000000000000000000000000000000000afab5f15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockHash": "0x7139e747a579cde6786ffc1f79d2a3779671a79a3095fd79ff0f158056fb420a", - "blockNumber": "0x421e0e", - "transactionHash": "0x2304a665ee1b602e0aae541fa26282dbb88c389a86b68c3553afbc6bf9c69f48", - "transactionIndex": "0x1", - "logIndex": "0x1", + "data": "0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001380000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000009400000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000da00000000000000000000000000000000000000000000000000000000000000e400000000000000000000000000000000000000000000000000000000000000f60000000000000000000000000000000000000000000000000000000000000114000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000538812c252058083aa2b13d425f11610c404c2500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a5e1ac8fa000000000000000000000000000000000000000000000000000000001219dee200000000000000000000000000000000000000000000000000000000af76f0460000000000000000000000000000000000000000000000000000000047c0748300000000000000000000000000000000000000000000000000000000d774b4e300000000000000000000000000000000000000000000000000000000c8422402000000000000000000000000000000000000000000000000000000007273e79600000000000000000000000000000000000000000000000000000000c1b2bc96000000000000000000000000000000000000000000000000000000006362aeb400000000000000000000000000000000000000000000000000000000ff3406ce000000000000000000000000000000000000000000000000000000000000000000000000000000000538812c252058083aa2b13d425f11610c404c25000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001373df69400000000000000000000000000000000000000000000000000000000000000000000000000000000fb745de4fe187b5ab18f0e5afb00ca38bc561c7100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000fce498e8400000000000000000000000000000000000000000000000000000000cb42950100000000000000000000000000000000000000000000000000000000e9f0273c00000000000000000000000000000000000000000000000000000000bdd2620a00000000000000000000000000000000000000000000000000000000eb75c8e800000000000000000000000000000000000000000000000000000000e6a19df200000000000000000000000000000000000000000000000000000000a62caf8200000000000000000000000000000000000000000000000000000000a006928900000000000000000000000000000000000000000000000000000000a246e7a8000000000000000000000000000000000000000000000000000000003453182800000000000000000000000000000000000000000000000000000000f1ebc81000000000000000000000000000000000000000000000000000000000ebc526dc000000000000000000000000000000000000000000000000000000005c74d6a4000000000000000000000000000000000000000000000000000000007bf96b68000000000000000000000000000000000000000000000000000000007f09d08500000000000000000000000000000000000000000000000000000000000000000000000000000000052caef4aac9319bb868e2a7f532edd6a6fbd78800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000a04e2e5000000000000000000000000000000000000000000000000000000000078e890ba00000000000000000000000000000000000000000000000000000000f17d17f400000000000000000000000000000000000000000000000000000000edd2133b00000000000000000000000000000000000000000000000000000000a1a2e295000000000000000000000000000000000000000000000000000000004980f2880000000000000000000000000000000000000000000000000000000010b4955d00000000000000000000000000000000000000000000000000000000a2e4569b0000000000000000000000000000000000000000000000000000000073abdfa50000000000000000000000000000000000000000000000000000000060f58edf0000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000004337781ea000000000000000000000000000000000000000000000000000000001d5102170000000000000000000000000000000000000000000000000000000022f153db00000000000000000000000000000000000000000000000000000000371d62440000000000000000000000000000000000000000000000000000000000000000000000000000000076737dbd74cfb3e6d260e800b156da6efbe89e9a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002e13b9b140000000000000000000000000000000000000000000000000000000010a2bbed00000000000000000000000000000000000000000000000000000000000000000000000000000000194a3fdc437b5398e4f334940abbe278491d1378000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000008012ee17b00000000000000000000000000000000000000000000000000000000ef706adf000000000000000000000000000000000000000000000000000000009df00480000000000000000000000000000000000000000000000000000000004c8198dc0000000000000000000000000000000000000000000000000000000059e148fc00000000000000000000000000000000000000000000000000000000810a374d000000000000000000000000000000000000000000000000000000004579268a000000000000000000000000000000000000000000000000000000008d81a1d300000000000000000000000000000000000000000000000000000000000000000000000000000000abb567184419ec38dc3631c765dbae503b51e1ca00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000270a082310000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000071add96f60000000000000000000000000000000000000000000000000000000023eaabe30000000000000000000000000000000000000000000000000000000000bae17300000000000000000000000000000000000000000000000000000000f3253b5f00000000000000000000000000000000000000000000000000000000c3ab48cb00000000000000000000000000000000000000000000000000000000e8b3fb3c000000000000000000000000000000000000000000000000000000007d29260500000000000000000000000000000000000000000000000000000000000000000000000000000000e33cb0263cd518e689a6b2c838cc1ca9fcd560300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010a27162a00000000000000000000000000000000000000000000000000000000000000000000000000000000217c1d6d6a72925918a644d67dcb0c3760b81e0800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000553733f9700000000000000000000000000000000000000000000000000000000cf0ccf9e00000000000000000000000000000000000000000000000000000000524d8dd500000000000000000000000000000000000000000000000000000000cfb51928000000000000000000000000000000000000000000000000000000007dfcdf2a000000000000000000000000000000000000000000000000000000000000000000000000000000006254efd84ce152306448e2d10c4df7dce6c9976500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b7baa1dde00000000000000000000000000000000000000000000000000000000d588b132000000000000000000000000000000000000000000000000000000005c92330100000000000000000000000000000000000000000000000000000000c978758900000000000000000000000000000000000000000000000000000000e208f10a00000000000000000000000000000000000000000000000000000000ec7a377000000000000000000000000000000000000000000000000000000000a6cd857d00000000000000000000000000000000000000000000000000000000aa47d5cb00000000000000000000000000000000000000000000000000000000ad747f2f0000000000000000000000000000000000000000000000000000000033f6dfd8000000000000000000000000000000000000000000000000000000001ed7db65000000000000000000000000000000000000000000000000000000000000000000000000000000008fe69c524112f080a15d409f7c68b562485412660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000029bda86780000000000000000000000000000000000000000000000000000000013b747600000000000000000000000000000000000000000000000000000000000000000000000000000000065c37f11879ab9abab518457e665c45aaf074db70000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000043f1b887f0000000000000000000000000000000000000000000000000000000053b66f36000000000000000000000000000000000000000000000000000000009cb481b200000000000000000000000000000000000000000000000000000000afab5f15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x83ab8ab80973b6d8c0954516089feaa4cb500403b859364a72bfdfaf4dc3e33a", + "blockNumber": "0x446368", + "transactionHash": "0x515d130f2c6ead880d70567e1f9fff871218188dc51b0cacbe13eccc3fb66dba", + "transactionIndex": "0x5", + "logIndex": "0x8", "removed": false } ], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000001000000000800020000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d1a75c" + "effectiveGasPrice": "0xbf8233b7" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1695291651, + "timestamp": 1697191382, "chain": 11155111, "multi": false, - "commit": "03006b4" + "commit": "13da7ed8" } \ No newline at end of file diff --git a/broadcast/SmartDeploy.s.sol/11155111/run-1697190766.json b/broadcast/SmartDeploy.s.sol/11155111/run-1697190766.json new file mode 100644 index 00000000..a1038acd --- /dev/null +++ b/broadcast/SmartDeploy.s.sol/11155111/run-1697190766.json @@ -0,0 +1,250 @@ +{ + "transactions": [ + { + "hash": "0x03f421f721386b2c3e6156bb6e4bd3f9d9c7c2a854d955395c34a75971018e2a", + "transactionType": "CREATE", + "contractName": "ACLFacet", + "contractAddress": "0x0538812C252058083Aa2b13d425f11610C404C25", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x16a4d6", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506113b0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637273e796116100715780637273e79614610132578063af76f04614610145578063c1b2bc9614610158578063c84224021461016b578063d774b4e31461017e578063ff3406ce1461019157600080fd5b80631219dee2146100ae578063373df694146100d657806347c07483146100e95780635e1ac8fa1461010a5780636362aeb41461011f575b600080fd5b6100c16100bc366004610fe3565b6101a4565b60405190151581526020015b60405180910390f35b6100c16100e436600461103d565b6101c5565b6100fc6100f7366004611069565b6101dc565b6040519081526020016100cd565b61011d61011836600461108b565b6101e8565b005b61011d61012d3660046110db565b6102c6565b6100c16101403660046110db565b610392565b6100c16101533660046110db565b61039e565b61011d610166366004611069565b6103aa565b6100c161017936600461108b565b610420565b6100c161018c36600461108b565b610435565b61011d61019f36600461113f565b61044a565b60006101ba8585856101b586610527565b610538565b90505b949350505050565b60006101d2848484610606565b90505b9392505050565b60006101d58383610661565b60006101f33361069d565b90506102048185856101b586610527565b61024e5760405162461bcd60e51b815260206004820152601660248201527506e6f7420696e2061737369676e6572732067726f75760541b60448201526064015b60405180910390fd5b600061025a8585610661565b90508015801590610274575061027282868684610538565b155b156102a257818585610285846106b2565b60405163065708d560e31b8152600401610245949392919061120c565b6102ac85856106e3565b6102bf85856102ba86610527565b610844565b5050505050565b6102ce610afc565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103118261030183610527565b61030a3361069d565b9190610606565b6103825761031e3361069d565b8260006103348261032e3361069d565b90610661565b146103535761034e6103498561032e3361069d565b6106b2565b610364565b604051806020016040528060008152505b83604051630696a9cb60e51b8152600401610245949392919061123b565b61038c8484610b2a565b50505050565b60006101d58383610bf3565b60006101d58383610c64565b60006103b68383610661565b905060006103c33361069d565b90506103d181858585610538565b6104165760405162461bcd60e51b815260206004820152601660248201527506e6f7420696e2061737369676e6572732067726f75760541b6044820152606401610245565b61038c84846106e3565b60006101d2848461043085610527565b610ca6565b60006101d2848461044585610527565b610ce8565b610452610afc565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104858261030183610527565b6104925761031e3361069d565b6104c1846040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610d77565b1561051c5760405162461bcd60e51b815260206004820152602560248201527f73797374656d2061646d696e732067726f7570206973206e6f74206d6f6469666044820152646961626c6560d81b6064820152608401610245565b6102bf858585610dd0565b600061053282610ec0565b92915050565b60008360000361057e5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b6044820152606401610245565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe5602052604090205460008051602061135b833981519152906105c7878683610ce8565b156105d7576001925050506101bd565b6105e9876105e3610afc565b83610ce8565b156105f9576001925050506101bd565b5060009695505050505050565b6000610613848484610ca6565b15610620575060016101d5565b61062b848484610ce8565b15610638575060016101d5565b61064a84610644610afc565b84610ce8565b15610657575060016101d5565b5060009392505050565b60009182527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080842092845291905290205490565b60601b6bffffffffffffffffffffffff191690565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832084845290915290205460008051602061135b83398151915290610734610afc565b8314801561076d575061076a6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b81145b156107a357600182602a0154116107965760405162461bcd60e51b815260040161024590611277565b602a820180546000190190555b6000848152601f8301602090815260408083208684529091529081902054905185917f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9161081e918782526020820152606060408201819052600d908201526c5f756e61737369676e526f6c6560981b608082015260a00190565b60405180910390a2506000928352601f0160209081526040808420928452919052812055565b60008051602061135b83398151915260008490036108985760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b6044820152606401610245565b826000036108dd5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b6044820152606401610245565b8160000361091f5760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b6044820152606401610245565b6000848152601f820160209081526040808320868452909152902054610943610afc565b8414801561097c57506109796040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b81145b80156109885750828114155b156109be57600182602a0154116109b15760405162461bcd60e51b815260040161024590611277565b602a820180546000190190555b6109c6610afc565b841480156109ff57506109fc6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b83145b15610a7a57610a0d85610edb565b6001600160a01b0316610a477fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603610a6e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060818301819052600b908201526a5f61737369676e526f6c6560a81b6080820152905186917f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e919081900360a00190a25050505050565b6000610b256040518060400160405280600681526020016553797374656d60d01b815250610527565b905090565b610b33826112ba565b600003610b53576040516305ccaaf160e41b815260040160405180910390fd5b610b5c816112ba565b600003610b7c57604051630db0d26760e21b815260040160405180910390fd5b60008051602061135b833981519152610b9482610527565b81601e016000610ba386610527565b8152602001908152602001600020819055507f736c56e4bb16c438047d822d53251d5034edf27808ac582857e8863b898c95298383604051610be69291906112e1565b60405180910390a1505050565b600060008051602061135b8339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe482610c2f86610527565b81526020019081526020016000206000610c4885610527565b815260208101919091526040016000205460ff16949350505050565b600060008051602061135b833981519152610c7e83610527565b81601e016000610c8d87610527565b8152602001908152602001600020541491505092915050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054610cdf818585610ce8565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602061135b833981519152908015801590610d5b57506000818152601d83016020908152604080832087845290915290205460ff165b15610d6b576001925050506101d5565b50600095945050505050565b600081604051602001610d8a9190611306565b6040516020818303038152906040528051906020012083604051602001610db19190611306565b6040516020818303038152906040528051906020012014905092915050565b60008051602061135b833981519152610de8846112ba565b600003610e08576040516305ccaaf160e41b815260040160405180910390fd5b610e11836112ba565b600003610e3157604051630db0d26760e21b815260040160405180910390fd5b8181601d016000610e4187610527565b81526020019081526020016000206000610e5a86610527565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6f94e7b578c4524a9c142c004ba6682c061019130e377a6f81d31792a25b7bcc848484604051610eb293929190611322565b60405180910390a150505050565b60008151600003610ed357506000919050565b506020015190565b60006bffffffffffffffffffffffff821615610f395760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610245565b5060601c90565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610f6757600080fd5b813567ffffffffffffffff80821115610f8257610f82610f40565b604051601f8301601f19908116603f01168101908282118183101715610faa57610faa610f40565b81604052838152866020858801011115610fc357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215610ff957600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff81111561102557600080fd5b61103187828801610f56565b91505092959194509250565b60008060006060848603121561105257600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561107c57600080fd5b50508035926020909101359150565b6000806000606084860312156110a057600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156110c557600080fd5b6110d186828701610f56565b9150509250925092565b600080604083850312156110ee57600080fd5b823567ffffffffffffffff8082111561110657600080fd5b61111286838701610f56565b9350602085013591508082111561112857600080fd5b5061113585828601610f56565b9150509250929050565b60008060006060848603121561115457600080fd5b833567ffffffffffffffff8082111561116c57600080fd5b61117887838801610f56565b9450602086013591508082111561118e57600080fd5b5061119b86828701610f56565b925050604084013580151581146111b157600080fd5b809150509250925092565b60005b838110156111d75781810151838201526020016111bf565b50506000910152565b600081518084526111f88160208601602086016111bc565b601f01601f19169290920160200192915050565b84815283602082015282604082015260806060820152600061123160808301846111e0565b9695505050505050565b84815283602082015260806040820152600061125a60808301856111e0565b828103606084015261126c81856111e0565b979650505050505050565b60208082526023908201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460408201526236b4b760e91b606082015260800190565b805160208083015191908110156112db576000198160200360031b1b821691505b50919050565b6040815260006112f460408301856111e0565b8281036020840152610cdf81856111e0565b600082516113188184602087016111bc565b9190910192915050565b60608152600061133560608301866111e0565b828103602084015261134781866111e0565b915050821515604083015294935050505056fe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220e21f372d4c766f7f6831a9f8bbdf34d04a474929b32141982e2542379383f28a64736f6c63430008110033", + "nonce": "0x94", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8523e34459e7f2063545b739430e5aae7c90d33b3544e1656dfe3ef4545e241e", + "transactionType": "CREATE", + "contractName": "AdminFacet", + "contractAddress": "0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2cec23", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506127fe806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063bdd2620a11610097578063e9f0273c11610066578063e9f0273c146101ce578063eb75c8e814610202578063ebc526dc14610218578063f1ebc8101461022b57600080fd5b8063bdd2620a14610180578063cb42950114610195578063ce498e84146101a8578063e6a19df2146101bb57600080fd5b80637f09d085116100d35780637f09d0851461012a578063a00692891461013d578063a246e7a814610165578063a62caf821461016d57600080fd5b806334531828146100fa5780635c74d6a41461010f5780637bf96b6814610122575b600080fd5b61010d61010836600461226f565b61023e565b005b61010d61011d3660046122a8565b610346565b61010d610397565b61010d61013836600461226f565b6103eb565b61015061014b3660046122c5565b61043c565b60405190151581526020015b60405180910390f35b61010d61044d565b61015061017b3660046122c5565b61049d565b6101886104a8565b60405161015c91906122de565b61010d6101a336600461232b565b6104b7565b61010d6101b63660046123a0565b610508565b6101506101c936600461226f565b610568565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde5460405160ff909116815260200161015c565b61020a610597565b60405190815260200161015c565b61010d610226366004612423565b6105a1565b61010d610239366004612447565b6105f2565b61024661064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610289826102798361066f565b6102823361067a565b919061068f565b610338576102963361067a565b8260006102e1826102a63361067a565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b14610300576102fb6102f6856102a63361067a565b6106eb565b610311565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161032f94939291906124b9565b60405180910390fd5b6103418361071c565b505050565b61034e61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610381826102798361066f565b61038e576102963361067a565b610341836107db565b61039f61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103d2826102798361066f565b6103df576102963361067a565b6103e76108c8565b5050565b6103f361064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610426826102798361066f565b610433576102963361067a565b61034183610e6d565b600061044782610f1a565b92915050565b61045561064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610488826102798361066f565b610495576102963361067a565b6103e7610f7a565b600061044782611531565b60606104b2611584565b905090565b6104bf61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104f2826102798361066f565b6104ff576102963361067a565b610341836115f7565b61051061064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610543826102798361066f565b610550576102963361067a565b61055e888888888888611869565b5050505050505050565b6001600160e01b031981166000908152600080516020612789833981519152602052604081205460ff16610447565b60006104b261064a565b6105a961064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506105dc826102798361066f565b6105e9576102963361067a565b61034183611aa4565b6105fa61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061062d826102798361066f565b61063a576102963361067a565b6106448484611b5a565b50505050565b60006104b26040518060400160405280600681526020016553797374656d60d01b8152505b600061044782611c0e565b60601b6bffffffffffffffffffffffff191690565b600061069c848484611c29565b156106a9575060016106e4565b6106b4848484611c6b565b156106c1575060016106e4565b6106d3846106cd61064a565b84611c6b565b156106e0575060016106e4565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff1916600190811790915581518181528083019092529293929091828101908036833701905050905082816000815181106107855761078561250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b054906107ce908390612521565b60405180910390a1505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde546000805160206127a98339815191529060ff908116908316811061087a5760405162461bcd60e51b815260206004820152602e60248201527f5f7570646174654d61784469766964656e6444656e6f6d696e6174696f6e733a60448201526d2063616e6e6f742072656475636560901b606482015260840161032f565b60178201805460ff191660ff85811691821790925560408051928416835260208301919091527fe09b1c2d8d49f7249034d44d8dd27508c3f0a430a2df509300042437a4c46cf591016107ce565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce3805460ff199081169091557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c87188054821690557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e2744939278054821690557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c28054821690557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c8054821690557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe4990878054821690557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec695687228054821690557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a34018054821690557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c8054821690557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec638054821690557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb069998054821690557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e8054821690557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b8280548216905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b1805490921690915560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b81600081518110610b4f57610b4f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b9082906001908110610b8657610b8661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b9082906002908110610bbd57610bbd61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b9082906003908110610bf357610bf361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b9082906004908110610c2a57610c2a61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b9082906005908110610c6157610c6161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b9082906006908110610c9857610c9861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b9082906007908110610ccf57610ccf61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b9082906008908110610d0657610d0661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b9082906009908110610d3d57610d3d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a908110610d7457610d7461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b908110610dab57610dab61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c908110610de157610de161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d908110610e1857610e1861250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d117551490610e61908390612521565b60405180910390a15050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff19169055805160018082528183019092529293929182810190803683370190505090508281600081518110610ed157610ed161250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d1175514906107ce908390612521565b60006000805160206127a98339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda82610f5685611cfa565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce38054600160ff1991821681179092557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c871880548216831790557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e27449392780548216831790557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c280548216831790557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c80548216831790557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe49908780548216831790557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec6956872280548216831790557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a340180548216831790557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c80548216831790557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec6380548216831790557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb0699980548216831790557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e80548216831790557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b82805482168317905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b18054909216909217905560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b8160008151811061121f5761121f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b90829060019081106112565761125661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b908290600290811061128d5761128d61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b90829060039081106112c3576112c361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b90829060049081106112fa576112fa61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b90829060059081106113315761133161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b90829060069081106113685761136861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b908290600790811061139f5761139f61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b90829060089081106113d6576113d661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b908290600990811061140d5761140d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a9081106114445761144461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b90811061147b5761147b61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c9081106114b1576114b161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d9081106114e8576114e861250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b05490610e61908390612521565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd36020526040812080546000805160206127a9833981519152919061157a90612563565b1515949350505050565b606060006000805160206127a9833981519152601481018054604080516020808402820181019092528281529394508301828280156115ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115ce575b505050505091505090565b601261160282611d5f565b60ff16111561162457604051630f4051bd60e11b815260040160405180910390fd5b6001600160a01b03811660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda60205260409020546000805160206127a98339815191529060ff16156116bc5760405162461bcd60e51b815260206004820152601c60248201527f65787465726e616c20746f6b656e20616c726561647920616464656400000000604482015260640161032f565b6001600160a01b0382166000908152602b820160205260409020541561173f5760405162461bcd60e51b815260206004820152603260248201527f63616e6e6f74206164642070617274696369706174696f6e20746f6b656e20776044820152711c985c1c195c88185cc8195e1d195c9b985b60721b606482015260840161032f565b600061174a83611e6a565b905061175581611f6b565b6117a15760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161032f565b6001600160a01b03831660009081526013830160205260408120805460ff191660011790556117cf8461067a565b90506117da81611fc8565b601483018054600181018255600091825260209091200180546001600160a01b0319166001600160a01b0386161790556040518190602c85019061181f90859061259d565b908152604051908190036020018120919091556001600160a01b038516907fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d790600090a250505050565b6000805160206127a98339815191528184146118d35760405162461bcd60e51b815260206004820152602360248201527f72656365697665727320616e6420626173697320706f696e7473206d69736d616044820152620e8c6d60eb1b606482015260840161032f565b6000878152602d8201602090815260408083208984529091528120906118f98282612129565b61190760018301600061214a565b5050604080516060602087028083018201845292820187815260009383928a918a91829190860190849080828437600092019190915250505090825250604080516020878102828101820190935287825292830192909188918891829185019084908082843760009201829052509390945250508251519293509050805b828110156119cc57836020015181815181106119a3576119a361250b565b602002602001015161ffff16826119ba91906125cf565b91506119c5816125e2565b9050611985565b506119da60026127106125fb565b811115611a1157806119ef60026127106125fb565b6040516309281e0960e01b81526004810192909252602482015260440161032f565b60008a8152602d8501602090815260408083208c84528252909120845180518693611a4092849291019061216f565b506020828101518051611a5992600185019201906121ba565b509050507f8e22c2013153bfc59463ca08bb8cb31dd13119bf9ce2eee71d7a13069b50fc408a8a85604051611a909392919061261d565b60405180910390a150505050505050505050565b6000805160206127a9833981519152611ac060026127106125fb565b8261ffff161115611afe5781611ad960026127106125fb565b6040516309281e0960e01b815261ffff9092166004830152602482015260440161032f565b60268101805469ffff000000000000000019166801000000000000000061ffff8516908102919091179091556040519081527f92a4a904f938dda530a8218ca590b5c9fba2153905fd0396f1bff1dd499a543f90602001610e61565b81611ba75760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f742072656d6f76652064656661756c742066656573000000000000604482015260640161032f565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff46020908152604080832084845290915281206000805160206127a983398151915291611bf98282612129565b611c0760018301600061214a565b5050505050565b60008151600003611c2157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054611c62818585611c6b565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206127a9833981519152908015801590611cde57506000818152601d83016020908152604080832087845290915290205460ff165b15611cee576001925050506106e4565b50600095945050505050565b60006bffffffffffffffffffffffff821615611d585760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161032f565b5060601c90565b6000611d6a826120c8565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b03861691611dad9161259d565b6000604051808303816000865af19150503d8060008114611dea576040519150601f19603f3d011682016040523d82523d6000602084013e611def565b606091505b50915091508115611e165780806020019051810190611e0e91906126c9565b949350505050565b60405162461bcd60e51b815260206004820152602360248201527f4c696245524332303a2063616c6c20746f20646563696d616c732829206661696044820152621b195960ea1b606482015260840161032f565b6060611e75826120c8565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160009182916001600160a01b03861691611eb89161259d565b6000604051808303816000865af19150503d8060008114611ef5576040519150601f19603f3d011682016040523d82523d6000602084013e611efa565b606091505b50915091508115611f195780806020019051810190611e0e91906126e6565b60405162461bcd60e51b815260206004820152602160248201527f4c696245524332303a2063616c6c20746f2073796d626f6c2829206661696c656044820152601960fa1b606482015260840161032f565b6040516000906000805160206127a98339815191529082907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff390611fb090869061259d565b90815260200160405180910390205414915050919050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd060205260409020546000805160206127a98339815191529060ff161561206f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161032f565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b90606001610e61565b803b806103e75760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b606482015260840161032f565b5080546000825590600052602060002090810190612147919061225a565b50565b50805460008255600f016010900490600052602060002090810190612147919061225a565b8280548282559060005260206000209081019282156121aa579160200282015b828111156121aa57825182559160200191906001019061218f565b506121b692915061225a565b5090565b82805482825590600052602060002090600f016010900481019282156121aa5791602002820160005b8382111561222357835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026121e3565b80156122515782816101000a81549061ffff0219169055600201602081600101049283019260010302612223565b50506121b69291505b5b808211156121b6576000815560010161225b565b60006020828403121561228157600080fd5b81356001600160e01b0319811681146106e457600080fd5b60ff8116811461214757600080fd5b6000602082840312156122ba57600080fd5b81356106e481612299565b6000602082840312156122d757600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160a01b0316835292840192918401916001016122fa565b50909695505050505050565b60006020828403121561233d57600080fd5b81356001600160a01b03811681146106e457600080fd5b60008083601f84011261236657600080fd5b50813567ffffffffffffffff81111561237e57600080fd5b6020830191508360208260051b850101111561239957600080fd5b9250929050565b600080600080600080608087890312156123b957600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156123df57600080fd5b6123eb8a838b01612354565b9096509450606089013591508082111561240457600080fd5b5061241189828a01612354565b979a9699509497509295939492505050565b60006020828403121561243557600080fd5b813561ffff811681146106e457600080fd5b6000806040838503121561245a57600080fd5b50508035926020909101359150565b60005b8381101561248457818101518382015260200161246c565b50506000910152565b600081518084526124a5816020860160208601612469565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006124d8608083018561248d565b82810360608401526124ea818561248d565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160e01b0319168352928401929184019160010161253d565b600181811c9082168061257757607f821691505b60208210810361259757634e487b7160e01b600052602260045260246000fd5b50919050565b600082516125af818460208701612469565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610447576104476125b9565b6000600182016125f4576125f46125b9565b5060010190565b60008261261857634e487b7160e01b600052601260045260246000fd5b500490565b8381526000602084818401526060604084015260a0830184516040606086015281815180845260c0870191508483019350600092505b808310156126735783518252928401926001929092019190840190612653565b5086840151868203605f190160808801528051808352908501935090840191506000905b808210156126bb57835161ffff168352928401929184019160019190910190612697565b509098975050505050505050565b6000602082840312156126db57600080fd5b81516106e481612299565b6000602082840312156126f857600080fd5b815167ffffffffffffffff8082111561271057600080fd5b818401915084601f83011261272457600080fd5b815181811115612736576127366124f5565b604051601f8201601f19908116603f0116810190838211818310171561275e5761275e6124f5565b8160405282815287602084870101111561277757600080fd5b6124ea83602083016020880161246956fe47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a260501ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220c7fb0907563c4f62f833d928a1960a1a5277c1fdafc44ccc2434459e31d322de64736f6c63430008110033", + "nonce": "0x95", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xad2628f9093eecae72c4c70466d82751f30caed30312ac3a5a910686ca2ab336", + "transactionType": "CREATE", + "contractName": "EntityFacet", + "contractAddress": "0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x620c3f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061587480620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806378e890ba1161006657806378e890ba14610127578063a1a2e2951461012f578063a2e4569b1461014f578063edd2133b14610162578063f17d17f4146101b957600080fd5b806304e2e500146100a357806310b4955d146100b85780634980f288146100e057806360f58edf1461010157806373abdfa514610114575b600080fd5b6100b66100b1366004614d6c565b6101cc565b005b6100cb6100c6366004614df9565b610308565b60405190151581526020015b60405180910390f35b6100f36100ee366004614df9565b610319565b6040519081526020016100d7565b6100b661010f366004614eb5565b610324565b6100b6610122366004614f22565b610380565b6100f36103da565b61014261013d366004614f5a565b6103e9565b6040516100d79190614f7c565b6100b661015d366004615015565b61040e565b610175610170366004614df9565b61056c565b6040516100d79190600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b6100b66101c7366004614eb5565b6105a0565b6101d46105f5565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b81525061021d8261020d8361061a565b61021633610625565b919061063a565b6102975761022a33610625565b8260006102408261023a33610625565b90610695565b1461025f5761025a6102558561023a33610625565b6106c0565b610270565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161028e9493929190615091565b60405180910390fd5b856102a1816106f1565b608001516102f15760405162461bcd60e51b815260206004820152601f60248201527f73696d706c6520706f6c696379206372656174696f6e2064697361626c656400604482015260640161028e565b6102fe888888888861077c565b5050505050505050565b600061031382610cb3565b92915050565b600061031382610cde565b61032c6105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103618261020d8361061a565b61036e5761022a33610625565b610379858585610d2c565b5050505050565b6103886105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103bd8261020d8361061a565b6103ca5761022a33610625565b6103d48484610f35565b50505050565b60006103e4611225565b905090565b60408051808201909152606080825260208201526104078383611256565b9392505050565b6000356001600160e01b03191661045d816001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b1561049f5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604482015260640161028e565b60026104a9611482565b60030154036104fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028e565b6002610504611482565b6003015560408051808201909152601081526f537461727420546f6b656e2053616c6560801b6020820152849061053e8261020d8361061a565b61054b5761022a33610625565b6105568686866114a6565b50506001610562611482565b6003015550505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152610313826106f1565b6105a86105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506105dd8261020d8361061a565b6105ea5761022a33610625565b610379858585611689565b60006103e46040518060400160405280600681526020016553797374656d60d01b8152505b6000610313826118df565b60601b6bffffffffffffffffffffffff191690565b60006106478484846118fa565b1561065457506001610407565b61065f84848461191c565b1561066c57506001610407565b61067e846106786105f5565b8461191c565b1561068b57506001610407565b5060009392505050565b6000806106a0611482565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610724611482565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600085900361079e5760405163083191a360e41b815260040160405180910390fd5b60006107a8611482565b6000868152600f8201602052604090205490915060ff166107df5760405163e1f8801360e01b81526004810186905260240161028e565b6107ec60408501856150c2565b90506107fb60208601866150c2565b90501461084a5760405162461bcd60e51b815260206004820152601e60248201527f696e636f7272656374206e756d626572206f66207369676e6174757265730000604482015260640161028e565b6000868152601282016020526040902083906108668282615288565b505060008681526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752610995968c96949594938601939092919083018282801561092e57602002820191906000526020600020905b81548152602001906001019080831161091a575b505050505081526020016008820180548060200260200160405190810160405280929190818152602001828054801561098657602002820191906000526020600020905b815481526020019060010190808311610972575b5050505050815250508661198c565b600085815260118201602052604081206001810154909190612710906109bf906060880135615144565b6109c99190615349565b9050808260030160008282546109df919061536b565b9091555050600087815260278401602090815260408083208554845290915281208054839290610a1090849061536b565b9091555060009050610a3286356020880135604089013560608a013589611f55565b9050610a3f898983611fd0565b60008981526012850160205260408120600401805460ff19166001179055610a6788806150c2565b9050905060008060005b83811015610c4d57829150610ae985610a8d60408e018e6150c2565b84818110610a9d57610a9d61537e565b9050602002810190610aaf9190615394565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061204392505050565b9250610af860208c018c6150c2565b82818110610b0857610b0861537e565b90506020020135610b18846120fb565b14610ba55784610b2b60408d018d6150c2565b83818110610b3b57610b3b61537e565b9050602002810190610b4d9190615394565b610b5686610625565b610b5f876120fb565b8f8060200190610b6f91906150c2565b87818110610b7f57610b7f61537e565b9050602002013560405163ed7dd8af60e01b815260040161028e969594939291906153db565b826001600160a01b0316826001600160a01b031610610bea5760405163d953cdd960e01b81526001600160a01b0380841660048301528416602482015260440161028e565b610c3b610bfa60208d018d6150c2565b83818110610c0a57610c0a61537e565b602002919091013590508e610c1f8e806150c2565b85818110610c2f57610c2f61537e565b9050602002013561212c565b80610c4581615429565b915050610a71565b5060008c815260108801602052604090819020805460ff19166001179055518c907f56eae0275a21a12b30f91b02a57d763a8da5067e40cc082e5d2717e56a2aea2090610c9d908e815260200190565b60405180910390a2505050505050505050505050565b600080610cbe611482565b6000938452600e01602052505060409020546001600160a01b0316151590565b6000610313610ceb611225565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000610d36611482565b9050610d4183612415565b610d8d5760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b610d9684612450565b610dd95760405162461bcd60e51b81526020600482015260146024820152731bd89a9958dd081b9bdd081d1bdad95b9a5e995960621b604482015260640161028e565b6000848152600c8201602052604081208054610df490615442565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2090615442565b8015610e6d5780601f10610e4257610100808354040283529160200191610e6d565b820191906000526020600020905b815481529060010190602001808311610e5057829003601f168201915b5050505050905081602c0181604051610e86919061547c565b9081526040805160209281900383019020600090819055878152600c85019092529020610eb385826154d1565b506000858152600d830160205260409020610ece84826154d1565b508482602c0185604051610ee2919061547c565b908152602001604051809103902081905550847f4e5c23b5537f69e8864b5c33a22085f48db456d4a6dfd6ac8f691556bc8f909e8585604051610f26929190615591565b60405180910390a25050505050565b6000610f3f611482565b6000848152600f8201602052604090205490915060ff16610f765760405163e1f8801360e01b81526004810184905260240161028e565b610f7f82612484565b6000838152601182016020526040902060018101546003820154915490919084358114610fee5760405162461bcd60e51b815260206004820152601a60248201527f61737365744964206368616e6765206e6f7420616c6c6f776564000000000000604482015260640161028e565b6000868152601185016020526040908190209086013560029091015561101a60a08601608087016155b6565b60008781526011860160205260409020600401805460ff1916911515919091179055801580159061104f575082856020013514155b156111f257600083611065602088013585615144565b61106f9190615349565b6000888152602787016020908152604080832086845290915281205491925090829061109c9086906155d3565b6110a6919061536b565b9050806110b38985612725565b10156111165760405162461bcd60e51b815260206004820152602c60248201527f636f6c6c61746572616c20726174696f20696e76616c69642c206e6f7420656e60448201526b6f7567682062616c616e636560a01b606482015260840161028e565b866040013582111561117c5760405162461bcd60e51b815260206004820152602960248201527f6d6178206361706163697479206d757374206265203e3d207574696c697a656460448201526820636170616369747960b81b606482015260840161028e565b600088815260118701602090815260408083208a83013560018201819055600390910186905560278a018352818420878552835292819020849055805192835290820184905289917f859dcf182c6cdb0b87490f406c38a81a37e53defb3f5f9e20d5525ae9757a700910160405180910390a250505b60405186907fad70f6507f1aeb0fd1f13346cb14180cc3c76c7a31441dcd28a5e1b78c6f7a7390600090a2505050505050565b600080611230611482565b90508060010154461461124a5761124561274f565b611250565b80600201545b91505090565b60408051808201909152606080825260208201526000611274611482565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156112de57602002820191906000526020600020905b8154815260200190600101908083116112ca575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561135e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116113255790505b505050919092525050815151919250501580611381575060208101515181515114155b1561147a576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156113ee57602002820191906000526020600020905b8154815260200190600101908083116113da575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561146e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114355790505b50505050508152505090505b949350505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600082116114f65760405162461bcd60e51b815260206004820152601760248201527f6d696e7420616d6f756e74206d757374206265203e2030000000000000000000604482015260640161028e565b600081116115465760405162461bcd60e51b815260206004820152601760248201527f746f74616c207072696365206d757374206265203e2030000000000000000000604482015260640161028e565b6000611550611482565b6000858152600f8201602052604090205490915060ff166115875760405163e1f8801360e01b81526004810185905260240161028e565b61159084612450565b6115b057604051639262bf2960e01b81526004810185905260240161028e565b6000848152601182016020908152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003820154606082015260049091015460ff161515608082015261160d8580866127f7565b600061162286878785600001518860036129ad565b50506000878152600c850160209081526040808320600d880190925291829020915192935088927f1e0fe2db2ce2d56ef315966bafe53189281e5297e62c10199727acdc3b547f7e92611679928692909190615663565b60405180910390a2505050505050565b6000611693611482565b905082516000036116ba57604051633276fee960e11b81526004810185905260240161028e565b601083511061171a5760405162461bcd60e51b815260206004820152602660248201527f73796d626f6c206d757374206265206c657373207468616e203136206368617260448201526561637465727360d01b606482015260840161028e565b6000848152600f8201602052604090205460ff1661174e5760405163e1f8801360e01b81526004810185905260240161028e565b61175784612450565b156117a45760405162461bcd60e51b815260206004820152601860248201527f6f626a65637420616c726561647920746f6b656e697a65640000000000000000604482015260640161028e565b6117ad83612415565b6117f95760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b60008251116118435760405162461bcd60e51b81526020600482015260166024820152756e616d65206d757374206e6f7420626520656d70747960501b604482015260640161028e565b6000848152600c82016020526040902061185d84826154d1565b506000848152600d82016020526040902061187883826154d1565b508381602c018460405161188c919061547c565b9081526020016040518091039020819055507ff4416a16cc504990a6dc76d2ef631f24500fbcc260ee1530d9b74a4ad28781738484846040516118d19392919061568e565b60405180910390a150505050565b600081516000036118f257506000919050565b506020015190565b60008061190685612a3a565b905061191381858561191c565b95945050505050565b600080611927611482565b6000868152601f820160209081526040808320888452909152902054909150801580159061197057506000818152601d83016020908152604080832087845290915290205460ff165b1561198057600192505050610407565b50600095945050505050565b60008260600151116119d05760405162461bcd60e51b815260206004820152600d60248201526c06c696d6974206e6f74203e203609c1b604482015260640161028e565b6119dd8260400151612a5a565b611a295760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b60c082015115611a4c5760405163c96caacd60e01b815260040160405180910390fd5b60e082015115611a6f57604051632696d55d60e11b815260040160405180910390fd5b8160a0015115611a92576040516313b4184f60e31b815260040160405180910390fd5b6000611a9c611482565b6000858152601182016020908152604091829020825160a08101845281548082526001830154938201939093526002820154818501526003820154606082015260049091015460ff161515608082015291860151929350909114611b425760405162461bcd60e51b815260206004820152601e60248201527f6173736574206e6f74206d61746368696e67207769746820656e746974790000604482015260640161028e565b600061271082602001518660600151611b5b9190615144565b611b659190615349565b8260600151611b74919061536b565b90508082604001511015611bca5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820617661696c61626c65206361706163697479000000604482015260640161028e565b80611bd9878760400151612725565b1015611c1c5760405162461bcd60e51b81526020600482015260126024820152711b9bdd08195b9bdd59da0818d85c1a5d185b60721b604482015260640161028e565b8451421115611c6d5760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203c20626c6f636b2e74696d657374616d7000000000604482015260640161028e565b8451602086015111611cc15760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203e206d617475726174696f6e206461746500000000604482015260640161028e565b845160208601516201518091611cd6916155d3565b11611d315760405162461bcd60e51b815260206004820152602560248201527f706f6c69637920706572696f64206d757374206265206d6f7265207468616e20604482015264612064617960d81b606482015260840161028e565b6000611d3e876001611256565b80515190915080611d915760405162461bcd60e51b815260206004820181905260248201527f6d757374206861766520666565207363686564756c6520726563656976657273604482015260640161028e565b61010087015151611da287806150c2565b9050811115611df35760405162461bcd60e51b815260206004820152601d60248201527f746f6f206d616e7920636f6d6d697373696f6e20726563656976657273000000604482015260640161028e565b61012088015151818114611e535760405162461bcd60e51b815260206004820152602160248201527f6e756d626572206f6620636f6d6d697373696f6e7320646f6e2774206d6174636044820152600d60fb1b606482015260840161028e565b6000805b82811015611e9b578a61012001518181518110611e7657611e7661537e565b602002602001015182611e89919061536b565b9150611e9481615429565b9050611e57565b50611ea96002612710615349565b811115611ee05780611ebe6002612710615349565b6040516309281e0960e01b81526004810192909252602482015260440161028e565b611eed60208a018a6150c2565b9050611ef98a806150c2565b905014611f485760405162461bcd60e51b815260206004820152601b60248201527f7374616b65686f6c6465727320726f6c6573206d69736d617463680000000000604482015260640161028e565b5050505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c08101829052600090611fc69060e00160405160208183030381529060405280519060200120610cde565b9695505050505050565b6000611fda611482565b9050611fe584612a9a565b6000848152600a820160209081526040808320869055600b840182529182902084905581518681529081018590529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060016118d1565b600080600080845160410361208b5750505060208201516040830151606084015160001a80801561207b576001811461208457612089565b601b9150612089565b601c91505b505b60006120ef6120e7886040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b838686612b81565b50979650505050505050565b600080612106611482565b9050600061211384610625565b6000908152600a90920160205250604090205492915050565b6000612136611482565b90508360000361217c5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640161028e565b826000036121c15760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640161028e565b816000036122035760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640161028e565b6000848152601f8201602090815260408083208684529091529020546122276105f5565b84148015612260575061225d6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b81145b801561226c5750828114155b156122de57600182602a0154116122d15760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840161028e565b602a820180546000190190555b6122e66105f5565b8414801561231f575061231c6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b83145b1561239a5761232d85612c45565b6001600160a01b03166123677fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b03160361238e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a001610f26565b600080612420611482565b90506000801b81602c0184604051612438919061547c565b90815260200160405180910390205414915050919050565b60008061245b611482565b6000848152600c82016020526040902080549192509061247a90615442565b1515949350505050565b803515612624576124958135612a5a565b6124e15760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b80602001356001111580156124fc5750612710816020013511155b6125565760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840161028e565b61256660a08201608083016155b6565b1580612576575060008160400135115b6125e85760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840161028e565b8060400135816060013511156126215760408051630102498560e11b81526060830135600482015290820135602482015260440161028e565b50565b6020810135156126765760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640161028e565b61268660a08201608083016155b6565b156126d35760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640161028e565b6040810135156126215760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640161028e565b600080612730611482565b6000938452601501602090815260408085209585529490525050205490565b60008061275a611482565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8160040160405161278e91906156b9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b826000036128535760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b606482015260840161028e565b600081116128a35760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e7300604482015260640161028e565b60006128ad611482565b90506128be60008585856001612ca5565b6000838152601682016020526040812080548492906128de90849061536b565b9091555050600083815260158201602090815260408083208784529091528120805484929061290e90849061536b565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916129579161572f565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f91889190615762565b60405180910390a350505050565b60008060006129c0898989898989612e79565b60006129d08a8a8a8a8a8a613285565b905080604001519250806060015191506129f88a8a83602001518b8b86600001518c8c613555565b93506000612a04611482565b600086815260218201602052604090206008015490915060001901612a2c57612a2c8561377a565b505096509650969350505050565b600080612a45611482565b6000938452600a016020525050604090205490565b600080612a65611482565b9050806013016000612a7685612c45565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000612aa4611482565b600083815260098201602052604090205490915060ff1615612b215760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161028e565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612bb85750600090506003612c3c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c0c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c3557600060019250925050612c3c565b9150600090505b94509492505050565b60006001600160601b03821615612c9e5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161028e565b5060601c90565b6000612caf611482565b90506000612cbc856138ff565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612d1757602002820191906000526020600020905b815481526020019060010190808311612d03575b5050505050905060005b8151811015612e6e576000828281518110612d3e57612d3e61537e565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612d748987848461391f565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612dac90849061536b565b90915550508b15612df05760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612dea9084906155d3565b90915550505b8715612e5a5760008a8152601b8801602090815260408083208684529091529020548690612e1f908b90615144565b612e299190615349565b60008b8152601b89016020908152604080832087845290915281208054909190612e5490849061536b565b90915550505b50505080612e6790615429565b9050612d21565b505050505050505050565b6000612e83611482565b90508615801590612ea457506000878152600f8201602052604090205460ff165b612f015760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b606482015260840161028e565b6000868152600f8201602052604081205460ff16906001600160601b038816158015612f555750826013016000612f378a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b038816158015612fae5750846013016000612f908a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b9050612fba898861396f565b8380612fc35750825b61300f5760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c69640000000000000000604482015260640161028e565b81806130185750805b6130645760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c6964000000000000000000604482015260640161028e565b878a036130b35760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e0000604482015260640161028e565b8380156130bd5750805b806130cd57508280156130cd5750815b6131385760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b606482015260840161028e565b60008a815260158601602090815260408083208e845290915290205489111561319a5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015260640161028e565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a916131d4916155d3565b10156132375760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b606482015260840161028e565b60028614806132465750600386145b611f485760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b604482015260640161028e565b6132b06040518060800160405280600081526020016000815260200160008152602001600081525090565b60006132ba611482565b84835260208301879052905060006001600160601b03861615801561330757508160130160006132e988612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b602083015115801590613324575080806133245750825115155b1561354957600086815260228301602090815260408083208b8452909152812054908190036133535750613549565b600081815260218401602090815260409091206005810154600290910154918601518651919291829190846133888484615144565b613392919061536b565b61339c919061536b565b6133a6919061536b565b6133b0919061536b565b86516133bc9084615144565b11156133ca57505050613549565b5050600080831561347757602080870151600085815260218801909252604090912060050154106133ff578560200151613414565b60008381526021860160205260409020600501545b6000848152602187016020526040902060058101546002909101549193509061343d9084615144565b6134479190615349565b9050600061345988858f85878a613abc565b9050808760400181815161346d919061536b565b90525061350c9050565b85516000848152602187016020526040902060020154106134995785516134ae565b60008381526021860160205260409020600201545b600084815260218701602052604090206002810154600590910154919250906134d79083615144565b6134e19190615349565b915060006134f388858f85878a613abc565b90508087606001818151613507919061536b565b905250505b818660200181815161351e91906155d3565b9052508551811161353b5785516135369082906155d3565b61353e565b60005b86525061330a915050565b50509695505050505050565b600080613560611482565b90506000816020016000815461357590615429565b91905081905590506135e360405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080613626575060018a105b15613638576003610100820152613671565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c929061366b90849061536b565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d89610100015160405161376396959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b6000613784611482565b905061378f82613cfe565b156137dc5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c69737400000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061382957506138298783613d91565b15613849575060008181526021860160205260409020600a015490613815565b80801561387c576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506138a0565b60008681526022880160209081526040808320888452909152902080549089905593505b83156138c95760008481526021880160205260408082206009018a90558982529020600a018490555b6000868152602388016020908152604080832088845290915281208054916138f083615429565b91905055505050505050505050565b60008061390a611482565b60009384526016016020525050604090205490565b60008061392c8685615144565b905060008515613945576139408683615349565b613948565b60005b9050808410156139615761395c84826155d3565b613964565b60005b979650505050505050565b6001600160801b038211156139d05760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b606482015260840161028e565b6001600160801b03811115613a275760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d6974604482015260640161028e565b60008211613a705760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b604482015260640161028e565b60008111613ab85760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b604482015260640161028e565b5050565b600080613ac7611482565b9050613ad4878686613df1565b600087815260218201602052604081206007015460031480613af65750600389145b15613b0357506003613b07565b5060025b6000600382148015613b2e5750600089815260218401602052604090206001810154905414155b15613b4a57506000888152602183016020526040902054613b4d565b50865b8415613b8357600089815260218401602052604090208054600190910154613b7c9184918491908c908c613f16565b9350613baf565b600089815260218401602052604090208054600490910154613bac9184918491908c908b613f16565b93505b6000898152602184016020908152604080832080548452602787018352818420600190910154845290915281208054899290613bec9084906155d3565b9091555050600089815260218401602052604090208054600190910154613c1691908a908a6140f1565b50600089815260218401602052604090208054600490910154613c3b918a91896140f1565b505050600087815260218201602052604090206002015460011115613c7b57600087815260218201602052604090206003600890910155613c7b87614385565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b600080613d09611482565b60008481526021820160205260409020600181015460049091015491925090841580159061191357506000858152602184016020526040902060090154151580613d65575060008581526021840160205260409020600a015415155b806119135750600091825260229290920160209081526040808320938352929052205491909114919050565b600080613d9c611482565b600085815260218201602052604080822060028082015460059283015489865293909420908101549101549394509192909190613dd98482615144565b613de38385615144565b101598975050505050505050565b6000613dfb611482565b9050600080613e098661451a565b91509150613e17858561396f565b8060200151841115613e6b5760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c617267650000604482015260640161028e565b8160200151851115613ebf5760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c61726765604482015260640161028e565b848260200151613ecf91906155d3565b6000878152602185016020908152604090912060020191909155810151613ef79085906155d3565b6000968752602190930160205250506040909320600501929092555050565b600080613f21611482565b90506000613f2f888a611256565b6026830154909150600090600160401b900461ffff1615613fdd57602683015461271090613f6890600160401b900461ffff1687615144565b613f729190615349565b9050613f7e818561536b565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd88846002604051613fc7939291909283526020830191909152604082015260600190565b60405180910390a3613fdb878988846140f1565b505b81515160005b818110156140e257612710846020015182815181106140045761400461537e565b602002602001015161ffff168861401b9190615144565b6140259190615349565b925082156140d0576140568b856000015183815181106140475761404761537e565b60200260200101518a866140f1565b50614061838761536b565b9550836000015181815181106140795761407961537e565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a8660026040516140c7939291909283526020830191909152604082015260600190565b60405180910390a35b806140da81615429565b915050613fe3565b50505050509695505050505050565b6000806140fc611482565b600085815260158201602090815260408083208a845290915290205490915083111561417a5760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b606482015260840161028e565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916141b4916155d3565b10156142285760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b656400606482015260840161028e565b6142328685614590565b600084815260158201602090815260408083208984529091528120805485929061425d9084906155d3565b9091555050600084815260158201602090815260408083208884529091528120805485929061428d90849061536b565b909155506142a19050868686866000612ca5565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061581f8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061581f8339815191529181900360a00190a350600195945050505050565b600061438f611482565b905061439a82613cfe565b156143a8576143a88261463c565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015614480576040808201516000858152602185016020908152838220805483526027870182528483206001909101548352905291822080549192909161447a9084906155d3565b90915550505b6003816101000151146144e3576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103614515576000838152602183016020526040908190206001015490820151614515919081906148d2565b505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061454c611482565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b600061459a611482565b60008381526018820160209081526040808320805482518185028101850190935280835294955092939092918301828280156145f557602002820191906000526020600020905b8154815260200190600101908083116145e1575b5050505050905060005b81518110156103795761462c858584848151811061461f5761461f61537e565b6020026020010151614aef565b61463581615429565b90506145ff565b6000614646611482565b905061465182613cfe565b61469d5760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c6973740000000000000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260238601845282852081865290935292205461471c5760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f742065786973740000604482015260640161028e565b6000828152602284016020908152604080832084845290915290205484146147c1576000848152602184016020526040808220600901548083529120600a0154851461479e5760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600a90810154938352912001556147ef565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415614887576000848152602184016020526040808220600a015480835291206009015485146148685760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a0183905584835260238601825280832084845290915281208054916148c78361579b565b919050555050505050565b60006148dc611482565b600084815260158201602090815260408083208884529091529020549091508211156149565760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b606482015260840161028e565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391614990916155d3565b1015614a045760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b65640000000000606482015260840161028e565b614a0e8484614590565b600083815260168201602052604081208054849290614a2e9084906155d3565b90915550506000838152601582016020908152604080832087845290915281208054849290614a5e9084906155d3565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091614aa7916157b2565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f918891906157e5565b6000614af9611482565b90506000614b2b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b81525061061a565b60008581526015840160209081526040808320898452909152812054919250614b53866138ff565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190614b9d8585858561391f565b90508015614d60576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290614bd890849061536b565b90915550506000888152601588016020908152604080832089845290915281208054839290614c089084906155d3565b9091555050600088815260158801602090815260408083208d845290915281208054839290614c3890849061536b565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061581f8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061581f8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080600080600060a08688031215614d8457600080fd5b8535945060208601359350604086013567ffffffffffffffff80821115614daa57600080fd5b908701906060828a031215614dbe57600080fd5b90935060608701359080821115614dd457600080fd5b5086016101408189031215614de857600080fd5b949793965091946080013592915050565b600060208284031215614e0b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614e3957600080fd5b813567ffffffffffffffff80821115614e5457614e54614e12565b604051601f8301601f19908116603f01168101908282118183101715614e7c57614e7c614e12565b81604052838152866020858801011115614e9557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215614eca57600080fd5b83359250602084013567ffffffffffffffff80821115614ee957600080fd5b614ef587838801614e28565b93506040860135915080821115614f0b57600080fd5b50614f1886828701614e28565b9150509250925092565b60008082840360c0811215614f3657600080fd5b8335925060a0601f1982011215614f4c57600080fd5b506020830190509250929050565b60008060408385031215614f6d57600080fd5b50508035926020909101359150565b6020808252825160408383015280516060840181905260009291820190839060808601905b80831015614fc15783518252928401926001929092019190840190614fa1565b5086840151868203601f190160408801528051808352908501935090840191506000905b8082101561500957835161ffff168352928401929184019160019190910190614fe5565b50909695505050505050565b60008060006060848603121561502a57600080fd5b505081359360208301359350604090920135919050565b60005b8381101561505c578181015183820152602001615044565b50506000910152565b6000815180845261507d816020860160208601615041565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006150b06080830185615065565b82810360608401526139648185615065565b6000808335601e198436030181126150d957600080fd5b83018035915067ffffffffffffffff8211156150f457600080fd5b6020019150600581901b360382131561510c57600080fd5b9250929050565b801515811461262157600080fd5b6000813561031381615113565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103135761031361512e565b67ffffffffffffffff83111561517357615173614e12565b600160401b83111561518757615187614e12565b8054838255808410156151be576000828152602081208581019083015b808210156151ba578282556001820191506151a4565b5050505b5060008181526020812083915b858110156151e7578235828201556020909201916001016151cb565b505050505050565b5b81811015613ab857600081556001016151f0565b67ffffffffffffffff83111561521c5761521c614e12565b600160401b83111561523057615230614e12565b805483825580841015615256578160005260206000206152548282018683016151ef565b505b50818160005260208060002060005b8681101561527f5783358282015592820192600101615265565b50505050505050565b81358155602082013560018201556040820135600282015560608201356003820155600481016152d16152bd60808501615121565b825490151560ff1660ff1991909116178255565b6152fa6152e060a08501615121565b82805461ff00191691151560081b61ff0016919091179055565b5060c0820135600582015560e0820135600682015561531d6101008301836150c2565b61532b81836007860161515b565b505061533b6101208301836150c2565b6103d4818360088601615204565b60008261536657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156103135761031361512e565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126153ab57600080fd5b83018035915067ffffffffffffffff8211156153c657600080fd5b60200191503681900382131561510c57600080fd5b86815260a060208201528460a0820152848660c0830137600060c08683010152600060c0601f19601f8801168301019050846040830152836060830152826080830152979650505050505050565b60006001820161543b5761543b61512e565b5060010190565b600181811c9082168061545657607f821691505b60208210810361547657634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161548e818460208701615041565b9190910192915050565b601f82111561451557806000526020600020601f840160051c810160208510156154bf5750805b610379601f850160051c8301826151ef565b815167ffffffffffffffff8111156154eb576154eb614e12565b6154ff816154f98454615442565b84615498565b602080601f831160018114615534576000841561551c5750858301515b600019600386901b1c1916600185901b1785556151e7565b600085815260208120601f198616915b8281101561556357888601518255948401946001909101908401615544565b50858210156155815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006155a46040830185615065565b82810360208401526119138185615065565b6000602082840312156155c857600080fd5b813561040781615113565b818103818111156103135761031361512e565b600081546155f381615442565b808552602060018381168015615610576001811461562a57615658565b60ff1985168884015283151560051b880183019550615658565b866000528260002060005b858110156156505781548a8201860152908301908401615635565b890184019650505b505050505092915050565b83815260606020820152600061567c60608301856155e6565b8281036040840152611fc681856155e6565b8381526060602082015260006156a76060830185615065565b8281036040840152611fc68185615065565b60008083546156c781615442565b600182811680156156df57600181146156f457615723565b60ff1984168752821515830287019450615723565b8760005260208060002060005b8581101561571a5781548a820152908401908201615701565b50505082870194505b50929695505050505050565b81815260406020820152600061040760408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b6000816157aa576157aa61512e565b506000190190565b81815260406020820152600061040760408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba26469706673582212200bcf7862a6456e4582ce6e449869108edaa6bcd2d0467e6aa2d7b78f636e968264736f6c63430008110033", + "nonce": "0x96", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7281b30ceb6715e3fe8f504fa9c474767c361390969652fc08d6c6ebb479aae0", + "transactionType": "CREATE", + "contractName": "GovernanceFacet", + "contractAddress": "0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0xa0efd", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50610835806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806310a2bbed146100675780631d5102171461008f57806322f153db146100a4578063337781ea146100f1578063371d624414610104578063e13b9b1414610117575b600080fd5b6000805160206107e08339815191525460ff1660405190151581526020015b60405180910390f35b6100a261009d366004610723565b61013e565b005b6100e36100b2366004610723565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef602052604090205490565b604051908152602001610086565b6100a26100ff366004610723565b61034a565b6100a2610112366004610723565b610462565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff0546100e3565b61014661056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061018e8261017983610599565b6001600160601b03193360601b1691906105aa565b610253576001600160601b03193360601b165b8260006101f2826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1461021b57610216610211856001600160601b03193360601b166101b7565b610606565b61022c565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161024a9493929190610782565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef60205260409020546000805160206107e0833981519152904210156102eb5760405162461bcd60e51b815260206004820152602260248201527f557067726164652068617320616c7265616479206265656e207363686564756c604482015261195960f21b606482015260840161024a565b60298101546102fa90426107be565b6000858152602883016020908152604091829020929092555185815233917f3a44e179d9e19e4401346b6bded52859fff9aa9543bff59d04f48cd5c86056a191015b60405180910390a250505050565b61035261056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103858261017983610599565b61039c576001600160601b03193360601b166101a1565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef60205260409020546000805160206107e08339815191529061041b5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081d5c19dc98591948125160721b604482015260640161024a565b6000848152602882016020526040808220919091555133907f01a336412585b8675d19f339f8e31aca56990a1a2f0b4526aa86e2bcfa3660a39061033c9087815260200190565b61046a61056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061049d8261017983610599565b6104b4576001600160601b03193360601b166101a1565b6000805160206107e0833981519152603c841180156104d5575062093a8084105b61052b5760405162461bcd60e51b815260206004820152602160248201527f696e76616c696420757067726164652065787069726174696f6e20706572696f6044820152601960fa1b606482015260840161024a565b602981018490556040518481527f8f6d4287e1a643ad848fe5c460fdac7c1294b9ca04b7022b055e7f664cf9efdf9060200160405180910390a150505050565b60006105946040518060400160405280600681526020016553797374656d60d01b815250610599565b905090565b60006105a482610637565b92915050565b60006105b7848484610652565b156105c4575060016105ff565b6105cf848484610694565b156105dc575060016105ff565b6105ee846105e861056b565b84610694565b156105fb575060016105ff565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000815160000361064a57506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205461068b818585610694565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206107e083398151915290801580159061070757506000818152601d83016020908152604080832087845290915290205460ff165b15610717576001925050506105ff565b50600095945050505050565b60006020828403121561073557600080fd5b5035919050565b6000815180845260005b8181101561076257602081850181015186830182015201610746565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006107a1608083018561073c565b82810360608401526107b3818561073c565b979650505050505050565b808201808211156105a457634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212200410d8b81eeb45ebedc2d58ca1d4901ac530b3caff84efc5e448189aa57c71cb64736f6c63430008110033", + "nonce": "0x97", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeedafdb736d3eee4196d2b3b1f5f147c7f4af2b615a28b6a0864032db5aa4337", + "transactionType": "CREATE", + "contractName": "MarketFacet", + "contractAddress": "0x194A3fDc437b5398E4F334940aBBe278491D1378", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x381d65", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50613237806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063810a374d1161005b578063810a374d1461017b5780638d81a1d3146101965780639df00480146101b9578063ef706adf146101e757600080fd5b8063012ee17b1461008d5780634579268a146100ba5780634c8198dc1461015257806359e148fc14610173575b600080fd5b6100a061009b366004612fd6565b6101fc565b604080519283526020830191909152015b60405180910390f35b6100cd6100c8366004613008565b610218565b6040516100b19190600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525092915050565b610165610160366004613021565b61022f565b6040519081526020016100b1565b610165610242565b610183610251565b60405161ffff90911681526020016100b1565b6101a96101a4366004613008565b61025b565b60405190151581526020016100b1565b6101cc6101c7366004612fd6565b610266565b604080519384526020840192909252908201526060016100b1565b6101fa6101f5366004613008565b610434565b005b60008061020b86868686610618565b9097909650945050505050565b610220612f73565b61022982610845565b92915050565b600061023b83836108ea565b9392505050565b600061024c610915565b905090565b600061024c61092a565b60006102298261094a565b600080600080356001600160e01b03191661028081610970565b156102c75760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026102d16109ae565b60030154036103225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b600261032c6109ae565b60030155610339336109d2565b6040518060400160405280601381526020017222bc32b1baba32902634b6b4ba1027b33332b960691b8152506103828261037283610a03565b61037b33610a0e565b9190610a23565b6103f35761038f33610a0e565b8260006103a58261039f33610a0e565b90610a7e565b146103c4576103bf6103ba8561039f33610a0e565b610aa9565b6103d5565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016102be9493929190613089565b60006103fe336109d2565b905061040f818c8c8c8c6002610ada565b96509650965050505060016104226109ae565b60030181905550509450945094915050565b6000356001600160e01b03191661044a81610970565b1561048c5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016102be565b60026104966109ae565b60030154036104e75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b60026104f16109ae565b600301556104fe336109d2565b6040518060400160405280600c81526020016b21b0b731b2b61027b33332b960a11b8152506105308261037283610a03565b61053d5761038f33610a0e565b600161054885610845565b61010001511461058d5760405162461bcd60e51b815260206004820152601060248201526f6f66666572206e6f742061637469766560801b60448201526064016102be565b600061059885610845565b519050806105ad6105a833610a0e565b610b67565b146105fa5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206d656d626572206f6620656e746974792063616e2063616e63656c60448201526064016102be565b61060385610b87565b50505060016106106109ae565b600301555050565b60008060006106256109ae565b600086815260228201602090815260408083208a845290915281205491925085905b811561081e5760008381526021850160205260408120600201541561067f576000848152602186016020526040902060070154610682565b60035b905060006106908c83610d1c565b60008681526021880160205260408120600201549192509015806106c65750600086815260218801602052604090206002015485105b6106e35760008681526021880160205260409020600201546106e5565b845b90506106f181866130d0565b945060005b82602001515181101561078a576127108360200151828151811061071c5761071c6130e3565b602002602001015161ffff168361073391906130f9565b61073d9190613110565b610747908b613132565b99508260200151818151811061075f5761075f6130e3565b602002602001015161ffff16896107769190613132565b98508061078281613145565b9150506106f6565b506026870154600160401b900461ffff16156107f2576026870154612710906107be90600160401b900461ffff16836130f9565b6107c89190613110565b6107d2908a613132565b60268801549099506107ef90600160401b900461ffff1689613132565b97505b836107fc81613145565b6000978852602189016020526040909720600a01549694506106479350505050565b6000811161082c5784610836565b6108368186613110565b94505050505094509492505050565b61084d612f73565b60006108576109ae565b60009384526021016020908152604093849020845161016081018652815481526001820154928101929092526002810154948201949094526003840154606082015260048401546080820152600584015460a0820152600684015460c0820152600784015460e082015260088401546101008201526009840154610120820152600a909301546101408401525090919050565b6000806108f56109ae565b600094855260220160209081526040808620948652939052505090205490565b6000806109206109ae565b6020015492915050565b6000806109356109ae565b60260154600160401b900461ffff1692915050565b6000806109556109ae565b60009384526021016020525050604090206008015460011490565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806109dd6109ae565b905060006109ea84610a0e565b6000908152600a90920160205250604090205492915050565b600061022982610f48565b60601b6bffffffffffffffffffffffff191690565b6000610a30848484610f63565b15610a3d5750600161023b565b610a48848484610f85565b15610a555750600161023b565b610a6784610a61610ff5565b84610f85565b15610a745750600161023b565b5060009392505050565b600080610a896109ae565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000806000610aed89898989898961101e565b6000610afd8a8a8a8a8a8a611437565b90508060400151925080606001519150610b258a8a83602001518b8b86600001518c8c611707565b93506000610b316109ae565b600086815260218201602052604090206008015490915060001901610b5957610b59856118cd565b505096509650969350505050565b600080610b726109ae565b6000938452600a016020525050604090205490565b6000610b916109ae565b9050610b9c82611a52565b15610baa57610baa82611ae5565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015610c825760408082015160008581526021850160209081528382208054835260278701825284832060019091015483529052918220805491929091610c7c9084906130d0565b90915550505b600381610100015114610ce5576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103610d17576000838152602183016020526040908190206001015490820151610d1791908190611d7b565b505050565b60408051808201909152606080825260208201526000610d3a6109ae565b6000858152602d82016020908152604080832087845282528083208151815460609481028201850184529281018381529596509394909284928491840182828015610da457602002820191906000526020600020905b815481526020019060010190808311610d90575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610deb5790505b505050919092525050815151919250501580610e47575060208101515181515114155b15610f40576000808052602d8301602090815260408083208784528252918290208251815460609381028201840185529381018481529093919284928491840182828015610eb457602002820191906000526020600020905b815481526020019060010190808311610ea0575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f3457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610efb5790505b50505050508152505090505b949350505050565b60008151600003610f5b57506000919050565b506020015190565b600080610f6f85610b67565b9050610f7c818585610f85565b95945050505050565b600080610f906109ae565b6000868152601f8201602090815260408083208884529091529020549091508015801590610fd957506000818152601d83016020908152604080832087845290915290205460ff165b15610fe95760019250505061023b565b50600095945050505050565b600061024c6040518060400160405280600681526020016553797374656d60d01b815250610a03565b60006110286109ae565b9050861580159061104957506000878152600f8201602052604090205460ff165b6110a65760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b60648201526084016102be565b6000868152600f8201602052604081205460ff16906001600160601b0388161580156110fa57508260130160006110dc8a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b03881615801561115357508460130160006111358a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b905061115f8988612006565b83806111685750825b6111b45760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c6964000000000000000060448201526064016102be565b81806111bd5750805b6112095760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c696400000000000000000060448201526064016102be565b878a036112585760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e000060448201526064016102be565b8380156112625750805b8061127257508280156112725750815b6112dd5760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b60648201526084016102be565b60008a815260158601602090815260408083208e845290915290205489111561133f5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016102be565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a91611379916130d0565b10156113dc5760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b60648201526084016102be565b60028614806113eb5750600386145b61142a5760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b60448201526064016102be565b5050505050505050505050565b6114626040518060800160405280600081526020016000815260200160008152602001600081525090565b600061146c6109ae565b84835260208301879052905060006001600160601b0386161580156114b9575081601301600061149b88611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b6020830151158015906114d6575080806114d65750825115155b156116fb57600086815260228301602090815260408083208b84529091528120549081900361150557506116fb565b6000818152602184016020908152604090912060058101546002909101549186015186519192918291908461153a84846130f9565b6115449190613132565b61154e9190613132565b6115589190613132565b6115629190613132565b865161156e90846130f9565b111561157c575050506116fb565b5050600080831561162957602080870151600085815260218801909252604090912060050154106115b15785602001516115c6565b60008381526021860160205260409020600501545b600084815260218701602052604090206005810154600290910154919350906115ef90846130f9565b6115f99190613110565b9050600061160b88858f85878a612153565b9050808760400181815161161f9190613132565b9052506116be9050565b855160008481526021870160205260409020600201541061164b578551611660565b60008381526021860160205260409020600201545b6000848152602187016020526040902060028101546005909101549192509061168990836130f9565b6116939190613110565b915060006116a588858f85878a612153565b905080876060018181516116b99190613132565b905250505b81866020018181516116d091906130d0565b905250855181116116ed5785516116e89082906130d0565b6116f0565b60005b8652506114bc915050565b50509695505050505050565b6000806117126109ae565b90506000816020016000815461172790613145565b91829055509050611736612f73565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080611779575060018a105b1561178b5760036101008201526117c4565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c92906117be908490613132565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d8961010001516040516118b696959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b60006118d76109ae565b90506118e282611a52565b1561192f5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c6973740000000060448201526064016102be565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061197c575061197c8783612395565b1561199c575060008181526021860160205260409020600a015490611968565b8080156119cf576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506119f3565b60008681526022880160209081526040808320888452909152902080549089905593505b8315611a1c5760008481526021880160205260408082206009018a90558982529020600a018490555b600086815260238801602090815260408083208884529091528120805491611a4383613145565b91905055505050505050505050565b600080611a5d6109ae565b600084815260218201602052604090206001810154600490910154919250908415801590610f7c57506000858152602184016020526040902060090154151580611ab9575060008581526021840160205260409020600a015415155b80610f7c5750600091825260229290920160209081526040808320938352929052205491909114919050565b6000611aef6109ae565b9050611afa82611a52565b611b465760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c697374000000000000000060448201526064016102be565b600082815260218201602090815260408083206001810154600490910154818552602386018452828520818652909352922054611bc55760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f74206578697374000060448201526064016102be565b600082815260228401602090815260408083208484529091529020548414611c6a576000848152602184016020526040808220600901548083529120600a01548514611c475760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600a9081015493835291200155611c98565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415611d30576000848152602184016020526040808220600a01548083529120600901548514611d115760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a018390558483526023860182528083208484529091528120805491611d708361315e565b919050555050505050565b6000611d856109ae565b60008481526015820160209081526040808320888452909152902054909150821115611dff5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016102be565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391611e39916130d0565b1015611ead5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016102be565b611eb784846123f5565b600083815260168201602052604081208054849290611ed79084906130d0565b90915550506000838152601582016020908152604080832087845290915281208054849290611f079084906130d0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091611f5091613175565b60405180910390a36000838152601582016020908152604080832087845290915290819020549051339186916000805160206131e283398151915291611f98918891906131a8565b60405180910390a350505050565b60006001600160601b03821615611fff5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016102be565b5060601c90565b6001600160801b038211156120675760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b60648201526084016102be565b6001600160801b038111156120be5760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d697460448201526064016102be565b600082116121075760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b60448201526064016102be565b6000811161214f5760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b60448201526064016102be565b5050565b60008061215e6109ae565b905061216b8786866124a8565b60008781526021820160205260408120600701546003148061218d5750600389145b1561219a5750600361219e565b5060025b60006003821480156121c55750600089815260218401602052604090206001810154905414155b156121e1575060008881526021830160205260409020546121e4565b50865b841561221a576000898152602184016020526040902080546001909101546122139184918491908c908c6125cd565b9350612246565b6000898152602184016020526040902080546004909101546122439184918491908c908b6125cd565b93505b60008981526021840160209081526040808320805484526027870183528184206001909101548452909152812080548992906122839084906130d0565b90915550506000898152602184016020526040902080546001909101546122ad91908a908a6127a8565b506000898152602184016020526040902080546004909101546122d2918a91896127a8565b5050506000878152602182016020526040902060020154600111156123125760008781526021820160205260409020600360089091015561231287610b87565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b6000806123a06109ae565b6000858152602182016020526040808220600280820154600592830154898652939094209081015491015493945091929091906123dd84826130f9565b6123e783856130f9565b101598975050505050505050565b60006123ff6109ae565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561245a57602002820191906000526020600020905b815481526020019060010190808311612446575b5050505050905060005b81518110156124a1576124918585848481518110612484576124846130e3565b6020026020010151612a3c565b61249a81613145565b9050612464565b5050505050565b60006124b26109ae565b90506000806124c086612cb9565b915091506124ce8585612006565b80602001518411156125225760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c61726765000060448201526064016102be565b81602001518511156125765760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c6172676560448201526064016102be565b84826020015161258691906130d0565b60008781526021850160209081526040909120600201919091558101516125ae9085906130d0565b6000968752602190930160205250506040909320600501929092555050565b6000806125d86109ae565b905060006125e6888a610d1c565b6026830154909150600090600160401b900461ffff16156126945760268301546127109061261f90600160401b900461ffff16876130f9565b6126299190613110565b90506126358185613132565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8884600260405161267e939291909283526020830191909152604082015260600190565b60405180910390a3612692878988846127a8565b505b81515160005b8181101561279957612710846020015182815181106126bb576126bb6130e3565b602002602001015161ffff16886126d291906130f9565b6126dc9190613110565b925082156127875761270d8b856000015183815181106126fe576126fe6130e3565b60200260200101518a866127a8565b506127188387613132565b955083600001518181518110612730576127306130e3565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a86600260405161277e939291909283526020830191909152604082015260600190565b60405180910390a35b8061279181613145565b91505061269a565b50505050509695505050505050565b6000806127b36109ae565b600085815260158201602090815260408083208a84529091529020549091508311156128315760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016102be565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161286b916130d0565b10156128df5760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016102be565b6128e986856123f5565b60008481526015820160209081526040808320898452909152812080548592906129149084906130d0565b90915550506000848152601582016020908152604080832088845290915281208054859290612944908490613132565b909155506129589050868686866000612d2f565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339188916000805160206131e28339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339187916000805160206131e28339815191529181900360a00190a350600195945050505050565b6000612a466109ae565b90506000612a786040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610a03565b60008581526015840160209081526040808320898452909152812054919250612aa086612f03565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190612aea85858585612f23565b90508015612cad576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290612b25908490613132565b90915550506000888152601588016020908152604080832089845290915281208054839290612b559084906130d0565b9091555050600088815260158801602090815260408083208d845290915281208054839290612b85908490613132565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206131e28339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206131e28339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000612ceb6109ae565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b6000612d396109ae565b90506000612d4685612f03565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612da157602002820191906000526020600020905b815481526020019060010190808311612d8d575b5050505050905060005b8151811015612ef8576000828281518110612dc857612dc86130e3565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612dfe89878484612f23565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612e36908490613132565b90915550508b15612e7a5760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612e749084906130d0565b90915550505b8715612ee45760008a8152601b8801602090815260408083208684529091529020548690612ea9908b906130f9565b612eb39190613110565b60008b8152601b89016020908152604080832087845290915281208054909190612ede908490613132565b90915550505b50505080612ef190613145565b9050612dab565b505050505050505050565b600080612f0e6109ae565b60009384526016016020525050604090205490565b600080612f3086856130f9565b905060008515612f4957612f448683613110565b612f4c565b60005b905080841015612f6557612f6084826130d0565b612f68565b60005b979650505050505050565b60405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008060008060808587031215612fec57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561301a57600080fd5b5035919050565b6000806040838503121561303457600080fd5b50508035926020909101359150565b6000815180845260005b818110156130695760208185018101518683018201520161304d565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006130a86080830185613043565b8281036060840152612f688185613043565b634e487b7160e01b600052601160045260246000fd5b81810381811115610229576102296130ba565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610229576102296130ba565b60008261312d57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610229576102296130ba565b600060018201613157576131576130ba565b5060010190565b60008161316d5761316d6130ba565b506000190190565b81815260406020820152600061023b60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b828152816020820152606060408201526000610f4060608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220c641a6aef74c0fc0c5fbf30aa6deac4d54789e23617c82e946df8fed43e31e3e64736f6c63430008110033", + "nonce": "0x98", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2bfb4809138835d58f8dc033de004aab841dbfdbf32d0086123c2421d1c59778", + "transactionType": "CREATE", + "contractName": "NaymsTokenFacet", + "contractAddress": "0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x251df", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50610126806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806318160ddd14603757806370a0823114604f575b600080fd5b603d6094565b60405190815260200160405180910390f35b603d605a36600460c2565b6001600160a01b031660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcf602052604090205490565b600060bd7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcd5490565b905090565b60006020828403121560d357600080fd5b81356001600160a01b038116811460e957600080fd5b939250505056fea2646970667358221220933e33de5f2266d8a1d91e9925c2495e5176d45518c3d3f70b459965df517d3a64736f6c63430008110033", + "nonce": "0x99", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1abb1f61ba05344031110eb18ef39ece504e3f5a05745e8f26fdde9c0002ddce", + "transactionType": "CREATE", + "contractName": "SimplePolicyFacet", + "contractAddress": "0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2cc958", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506127e2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80637d2926051161005b5780637d292605146100fd578063c3ab48cb14610110578063e8b3fb3c14610188578063f3253b5f1461019b57600080fd5b8062bae1731461008c5780630a27162a146100a15780631add96f6146100ca57806323eaabe3146100ea575b600080fd5b61009f61009a366004612416565b6101bc565b005b6100b46100af366004612416565b610205565b6040516100c1919061242f565b60405180910390f35b6100dd6100d8366004612473565b61021b565b6040516100c19190612495565b61009f6100f8366004612416565b610250565b61009f61010b366004612473565b610320565b61012361011e366004612416565b6103c7565b6040516100c191906000610100820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015260a0830151151560a083015260c083015160c083015260e083015160e083015292915050565b61009f610196366004612523565b6104b6565b6101ae6101a9366004612555565b610541565b6040519081526020016100c1565b6000356001600160e01b0319166101d28161055a565b156101f85760405162461bcd60e51b81526004016101ef90612590565b60405180910390fd5b61020182610598565b5050565b606061021082610622565b610100015192915050565b61023f60405180606001604052806000815260200160008152602001606081525090565b61024983836107b5565b9392505050565b610258610c26565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b8152506102a18261029183610c54565b61029a33610c65565b9190610c7a565b610312576102ae33610c65565b8260006102c4826102be33610c65565b90610cd5565b146102e3576102de6102d9856102be33610c65565b610d00565b6102f4565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101ef9493929190612602565b61031b83610d31565b505050565b6000356001600160e01b0319166103368161055a565b156103535760405162461bcd60e51b81526004016101ef90612590565b82604051806040016040528060128152602001715061792053696d706c65205072656d69756d60701b81525061038c8261029183610c54565b610399576102ae33610c65565b60006103a433610c65565b905060006103b182610df3565b90506103be818888610e13565b50505050505050565b6104166040518061010001604052806000815260200160008152602001600080191681526020016000815260200160001515815260200160001515815260200160008152602001600081525090565b60405180610100016040528061042b84610622565b51815260200161043a84610622565b60200151815260200161044c84610622565b60400151815260200161045e84610622565b60600151815260200161047084610622565b608001511515815260200161048484610622565b60a001511515815260200161049884610622565b60c0015181526020016104aa84610622565b60e00151905292915050565b6000356001600160e01b0319166104cc8161055a565b156104e95760405162461bcd60e51b81526004016101ef90612590565b6104f233610fb1565b6040518060400160405280601081526020016f5061792053696d706c6520436c61696d60801b8152506105288261029183610c54565b610535576102ae33610c65565b6103be87878787610fe2565b600061055086868686866112d3565b9695505050505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b60006105a2611344565b60008381526012820160205260409020600481015491925090610100900460ff161580156105d4575080600101544210155b80156105e45750600481015460ff165b1561031b576105f283611368565b60405183907f5ef763899e3efa30fdc82a86b8d4d4a48974ced5248d778d1c4d322160ecfa0190600090a2505050565b61067f60405180610140016040528060008152602001600081526020016000801916815260200160008152602001600015158152602001600015158152602001600081526020016000815260200160608152602001606081525090565b6000610689611344565b60008481526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752969750919592949086019390929083018282801561074c57602002820191906000526020600020905b815481526020019060010190808311610738575b50505050508152602001600882018054806020026020016040519081016040528092919081815260200182805480156107a457602002820191906000526020600020905b815481526020019060010190808311610790575b505050505081525050915050919050565b6107d960405180606001604052806000815260200160008152602001606081525090565b60006107e3611344565b600085815260128201602090815260408083206007018054825181850281018501909352808352949550929390929183018282801561084157602002820191906000526020600020905b81548152602001906001019080831161082d575b5050505050905060008260120160008781526020019081526020016000206008018054806020026020016040519081016040528092919081815260200182805480156108ac57602002820191906000526020600020905b815481526020019060010190808311610898575b5050505050905060008251905060006108c488610df3565b905060006108d3826001611435565b80515190915060006108e58583612649565b6108ef9082612649565b90508067ffffffffffffffff81111561090a5761090a61265c565b60405190808252806020026020018201604052801561096357816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816109285790505b5060408a01526000805b86811015610aa25761271088828151811061098a5761098a612672565b60200260200101518d61099d9190612688565b6109a7919061269f565b91508881815181106109bb576109bb612672565b60200260200101518b6040015182815181106109d9576109d9612672565b602002602001015160200181815250508781815181106109fb576109fb612672565b60200260200101518b604001518281518110610a1957610a19612672565b60200260200101516080018181525050818b604001518281518110610a4057610a40612672565b60200260200101516060018181525050878181518110610a6257610a62612672565b60200260200101518b602001818151610a7b9190612649565b9052508a5182908c90610a8f908390612649565b905250610a9b816126c1565b905061096d565b5060005b83811015610c165761271085602001518281518110610ac757610ac7612672565b602002602001015161ffff168d610ade9190612688565b610ae8919061269f565b915084600001518181518110610b0057610b00612672565b60200260200101518b604001518289610b199190612649565b81518110610b2957610b29612672565b6020026020010151602001818152505084602001518181518110610b4f57610b4f612672565b602002602001015161ffff168b604001518289610b6c9190612649565b81518110610b7c57610b7c612672565b60209081029190910101516080015260408b01518290610b9c838a612649565b81518110610bac57610bac612672565b6020026020010151606001818152505084602001518181518110610bd257610bd2612672565b602002602001015161ffff168b602001818151610bef9190612649565b9052508a5182908c90610c03908390612649565b905250610c0f816126c1565b9050610aa6565b5050505050505050505092915050565b6000610c4f6040518060400160405280600681526020016553797374656d60d01b815250610c54565b905090565b6000610c5f82611661565b92915050565b60601b6bffffffffffffffffffffffff191690565b6000610c8784848461167c565b15610c9457506001610249565b610c9f84848461169e565b15610cac57506001610249565b610cbe84610cb8610c26565b8461169e565b15610ccb57506001610249565b5060009392505050565b600080610ce0611344565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000610d3b611344565b60008381526012820160205260409020600481015491925090610100900460ff1615610da95760405162461bcd60e51b815260206004820152601860248201527f506f6c69637920616c72656164792063616e63656c6c6564000000000000000060448201526064016101ef565b610db283611368565b60048101805461ff00191661010017905560405183907fb9f06c2aafb33d6e7e10925f097be026995386c2e7c3b05f336fe417c1b9c61e90600090a2505050565b600080610dfe611344565b6000938452600a016020525050604090205490565b60008111610e5c5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081c1c995b5a5d5b48185b5bdd5b9d60521b60448201526064016101ef565b6000610e66611344565b6000858152600f8201602052604090205490915060ff16610e9d5760405163e1f8801360e01b8152600481018590526024016101ef565b600083815260108201602052604090205460ff16610ed1576040516307c579f360e21b8152600481018490526024016101ef565b6000610edc84610df3565b60008581526012840160205260409020600481015491925090610100900460ff1615610f405760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101ef565b610f50868383600201548761170e565b50610f5b85856119a2565b83816006016000828254610f6f9190612649565b909155505060405184815285907fd44880514d72bd9d26e63603fa8448ea9bac29c0099e74e0a2c80a3ff4b39d829060200160405180910390a2505050505050565b600080610fbc611344565b90506000610fc984610c65565b6000908152600a90920160205250604090205492915050565b6000610fec611344565b9050600082116110355760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a590818db185a5b48185b5bdd5b9d60621b60448201526064016101ef565b61106f838561106a6040518060400160405280600f81526020016e496e7375726564205061727469657360881b815250610c54565b61169e565b6110b25760405162461bcd60e51b81526020600482015260146024820152736e6f7420616e20696e737572656420706172747960601b60448201526064016101ef565b600084815260128201602052604090206004810154610100900460ff16156111125760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101ef565b60058101546111218185612649565b8260030154101561116b5760405162461bcd60e51b8152602060048201526014602482015273195e18d959591cc81c1bdb1a58de481b1a5b5a5d60621b60448201526064016101ef565b8382600501600082825461117f9190612649565b909155506000905061119087610df3565b6000818152601186016020908152604091829020825160a081018452815481526001820154928101839052600282015493810193909352600381015460608401526004015460ff161515608083015291925090612710906111f19088612688565b6111fb919061269f565b6000838152602787016020908152604080832085518452909152812080549091906112279084906126da565b909155505060208101516127109061123f9088612688565b611249919061269f565b60008381526011870160205260408120600301805490919061126c9084906126da565b9091555061127b905089611c94565b61128b828886600201548961170e565b5086888a7f52cde9fcf4f60d6799679d6944671724549a11ac0b9ee9d4aa17899340472196896040516112c091815260200190565b60405180910390a4505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c081018290526000906105509060e00160405160208183030381529060405280519060200120611d7b565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000611372611344565b9050600061137f83610df3565b600084815260128401602090815260408083208484526011870190925282206001810154600583015460038401549596509294919392612710926113c391906126da565b6113cd9190612688565b6113d7919061269f565b9050808260030160008282546113ed91906126da565b909155505060008481526027860160209081526040808320855484529091528120805483929061141e9084906126da565b90915550505050600401805460ff19169055505050565b60408051808201909152606080825260208201526000611453611344565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156114bd57602002820191906000526020600020905b8154815260200190600101908083116114a9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561153d57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116115045790505b505050919092525050815151919250501580611560575060208101515181515114155b15611659576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156115cd57602002820191906000526020600020905b8154815260200190600101908083116115b9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561164d57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116116145790505b50505050508152505090505b949350505050565b6000815160000361167457506000919050565b506020015190565b60008061168885610df3565b905061169581858561169e565b95945050505050565b6000806116a9611344565b6000868152601f82016020908152604080832088845290915290205490915080158015906116f257506000818152601d83016020908152604080832087845290915290205460ff165b1561170257600192505050610249565b50600095945050505050565b600080611719611344565b600085815260158201602090815260408083208a84529091529020549091508311156117975760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101ef565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916117d1916126da565b10156118455760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101ef565b61184f8685611dc9565b600084815260158201602090815260408083208984529091528120805485929061187a9084906126da565b909155505060008481526015820160209081526040808320888452909152812080548592906118aa908490612649565b909155506118be9050868686866000611e7c565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061278d8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061278d8339815191529181900360a00190a350600195945050505050565b60006119ac611344565b6000848152601282016020908152604080832060070180548251818502810185019093528083529495509293909291830182828015611a0a57602002820191906000526020600020905b8154815260200190600101908083116119f6575b505050505090506000826012016000868152602001908152602001600020600801805480602002602001604051908101604052809291908181526020018280548015611a7557602002820191906000526020600020905b815481526020019060010190808311611a61575b505050505090506000825190506000611a8d87610df3565b6000888152601287016020526040812060020154919250805b84811015611b8057612710868281518110611ac357611ac3612672565b60200260200101518a611ad69190612688565b611ae0919061269f565b9150868181518110611af457611af4612672565b6020026020010151847f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd85856001604051611b42939291909283526020830191909152604082015260600190565b60405180910390a3611b6f84888381518110611b6057611b60612672565b6020026020010151858561170e565b50611b79816126c1565b9050611aa6565b506000611b8e846001611435565b80515190915060005b81811015611c865761271083602001518281518110611bb857611bb8612672565b602002602001015161ffff168c611bcf9190612688565b611bd9919061269f565b93508315611c76578251805182908110611bf557611bf5612672565b6020026020010151867f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd87876001604051611c43939291909283526020830191909152604082015260600190565b60405180910390a3611c748684600001518381518110611c6557611c65612672565b6020026020010151878761170e565b505b611c7f816126c1565b9050611b97565b505050505050505050505050565b6000611c9e611344565b600083815260098201602052604090205490915060ff1615611d1b5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101ef565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000610c5f611d88612050565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000611dd3611344565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015611e2e57602002820191906000526020600020905b815481526020019060010190808311611e1a575b5050505050905060005b8151811015611e7557611e658585848481518110611e5857611e58612672565b6020026020010151612081565b611e6e816126c1565b9050611e38565b5050505050565b6000611e86611344565b90506000611e93856122fe565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015611eee57602002820191906000526020600020905b815481526020019060010190808311611eda575b5050505050905060005b8151811015612045576000828281518110611f1557611f15612672565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090611f4b8987848461231e565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611f83908490612649565b90915550508b15611fc75760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290611fc19084906126da565b90915550505b87156120315760008a8152601b8801602090815260408083208684529091529020548690611ff6908b90612688565b612000919061269f565b60008b8152601b8901602090815260408083208784529091528120805490919061202b908490612649565b90915550505b5050508061203e906126c1565b9050611ef8565b505050505050505050565b60008061205b611344565b9050806001015446146120755761207061236e565b61207b565b80600201545b91505090565b600061208b611344565b905060006120bd6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610c54565b600085815260158401602090815260408083208984529091528120549192506120e5866122fe565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c8552909252822054929350919061212f8585858561231e565b905080156122f2576000898152601c8801602090815260408083208b845282528083208d84529091528120805483929061216a908490612649565b9091555050600088815260158801602090815260408083208984529091528120805483929061219a9084906126da565b9091555050600088815260158801602090815260408083208d8452909152812080548392906121ca908490612649565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061278d8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061278d8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080612309611344565b60009384526016016020525050604090205490565b60008061232b8685612688565b9050600085156123445761233f868361269f565b612347565b60005b9050808410156123605761235b84826126da565b612363565b60005b979650505050505050565b600080612379611344565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f816004016040516123ad91906126ed565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b60006020828403121561242857600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156124675783518352928401929184019160010161244b565b50909695505050505050565b6000806040838503121561248657600080fd5b50508035926020909101359150565b60006020808352608080840185518386015282860151604081818801528088015191506060808189015283835180865260a09550858a019150878501945060005b8181101561251357855180518452898101518a850152858101518685015284810151858501528801518884015294880194918601916001016124d6565b50909a9950505050505050505050565b6000806000806080858703121561253957600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a0868803121561256d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b818110156125e2576020818501810151868301820152016125c6565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061262160808301856125bc565b828103606084015261236381856125bc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c5f57610c5f612633565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610c5f57610c5f612633565b6000826126bc57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016126d3576126d3612633565b5060010190565b81810381811115610c5f57610c5f612633565b600080835481600182811c91508083168061270957607f831692505b6020808410820361272857634e487b7160e01b86526022600452602486fd5b81801561273c57600181146127515761277e565b60ff198616895284151585028901965061277e565b60008a81526020902060005b868110156127765781548b82015290850190830161275d565b505084890196505b50949897505050505050505056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba264697066735822122029aaa5bd1f621f08cf9bd85b6cb5b20baca02657e720f7f914498099eadedb7764736f6c63430008110033", + "nonce": "0x9a", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9ef1b894b371c25376cd287ea07a2b8a8926960479ab9375fac49805fbeb257c", + "transactionType": "CREATE", + "contractName": "SystemFacet", + "contractAddress": "0x217C1d6D6a72925918a644d67dcb0c3760b81E08", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x3184fc", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50612c5d806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200005e5760003560e01c8063524d8dd5146200006357806353733f97146200008f5780637dfcdf2a14620000a8578063cf0ccf9e14620000bf578063cfb5192814620000e9575b600080fd5b6200007a62000074366004620013ae565b6200010f565b60405190151581526020015b60405180910390f35b620000a6620000a0366004620013c8565b62000147565b005b620000a6620000b9366004620013ae565b62000284565b620000d6620000d0366004620013ae565b620003a2565b604051620000869594939291906200145b565b62000100620000fa366004620014c1565b620003c7565b60405190815260200162000086565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604081205460ff165b92915050565b62000151620003d4565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506200019f82620001898362000404565b6001600160601b03193360601b16919062000411565b6200026e576001600160601b03193360601b165b82600062000205826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1462000234576200022e62000228856001600160601b03193360601b16620001ca565b6200047b565b62000245565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016200026594939291906200157c565b60405180910390fd5b6200027c86868686620004ac565b505050505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5460011901620002f85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000265565b60027f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5562000326620003d4565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506200035c82620001898362000404565b62000375576001600160601b03193360601b16620001b3565b62000380836200063e565b505060016200039b60008051602062002c0883398151915290565b6003015550565b6000806060806000620003b586620007d3565b939a9299509097509550909350915050565b6000620001418262000404565b6000620003ff6040518060400160405280600681526020016553797374656d60d01b81525062000404565b905090565b60006200014182620009cd565b600062000420848484620009e9565b156200042f5750600162000474565b6200043c84848462000a2d565b156200044b5750600162000474565b62000461846200045a620003d4565b8462000a2d565b15620004705750600162000474565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008481527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460008051602062002c088339815191529060ff16156200051157604051634fd254f560e11b81526004810186905260240162000265565b6200051c8362000ac0565b62000528858362000d78565b62000534848662000dee565b6000858152600f82016020908152604091829020805460ff191660011790558151808301909252600c82526b22b73a34ba3c9020b236b4b760a11b908201526200058d9085908790620005879062000404565b62000e6e565b606083013515620005e15760405162461bcd60e51b815260206004820152601d60248201527f7574696c697a6564206361706163697479207374617274732061742030000000604482015260640162000265565b600085815260118201602052604090208390620005ff8282620015cb565b505060405184815285907f14944295d1f05c993504e6e25b1bc3eaadd9ace8fcd3fa0b015880dc0cceebcb906020015b60405180910390a25050505050565b60008051602062002c08833981519152620006598262001176565b6200069d5760405162461bcd60e51b81526020600482015260136024820152726d75737420626520746f6b656e697a61626c6560681b604482015260640162000265565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd560205260409020546001600160a01b031615620007235760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c72656164790000000000604482015260640162000265565b6000826040516200073490620013a0565b908152602001604051809103906000f08015801562000757573d6000803e3d6000fd5b506000848152600e84016020908152604080832080546001600160a01b0319166001600160a01b038616908117909155808452602b870183529281902087905551918252919250829185917fa31821b12665c4ed143d0185d4d5bceab4b16f15fad65d427a9f946457876af4910160405180910390a250505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd28352818420547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd390935290832080549193606092839260008051602062002c0883398151915291620008779062001617565b80601f0160208091040260200160405190810160405280929190818152602001828054620008a59062001617565b8015620008f65780601f10620008ca57610100808354040283529160200191620008f6565b820191906000526020600020905b815481529060010190602001808311620008d857829003601f168201915b50505060008a8152600d8501602052604090208054939750926200091d9250905062001617565b80601f01602080910402602001604051908101604052809291908181526020018280546200094b9062001617565b80156200099c5780601f1062000970576101008083540402835291602001916200099c565b820191906000526020600020905b8154815290600101906020018083116200097e57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b60008151600003620009e157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205462000a2481858562000a2d565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602062002c0883398151915290801580159062000aa257506000818152601d83016020908152604080832087845290915290205460ff165b1562000ab45760019250505062000474565b50600095945050505050565b80351562000c6f5762000ad48135620011cc565b62000b225760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640162000265565b806020013560011115801562000b3e5750612710816020013511155b62000b9a5760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840162000265565b62000bac60a082016080830162001653565b158062000bbd575060008160400135115b62000c315760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840162000265565b80604001358160600135111562000c6c5760408051630102498560e11b81526060830135600482015290820135602482015260440162000265565b50565b60208101351562000cc35760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640162000265565b62000cd560a082016080830162001653565b1562000d245760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640162000265565b60408101351562000c6c5760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640162000265565b60008051602062002c0883398151915262000d93836200122f565b6000838152600b8201602090815260408083208590558051868152918201929092529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060015b60405180910390a1505050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320849055805185815291820184905281019190915260008051602062002c08833981519152907f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab59060600162000de1565b60008051602062002c08833981519152600084900362000ec55760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640162000265565b8260000362000f0c5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640162000265565b8160000362000f505760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640162000265565b6000848152601f82016020908152604080832086845290915290205462000f76620003d4565b8414801562000fb2575062000faf6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b81145b801562000fbf5750828114155b156200103457600182602a015411620010275760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840162000265565b602a820180546000190190555b6200103e620003d4565b841480156200107a5750620010776040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b83145b15620010fa576200108b8562001339565b6001600160a01b0316620010c67fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603620010ee57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a0016200062f565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd360205260408120805460008051602062002c088339815191529190620011c29062001617565b1515949350505050565b600060008051602062002c088339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda826200120b8562001339565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604090205460008051602062002c088339815191529060ff1615620012d95760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840162000265565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b60006bffffffffffffffffffffffff821615620013995760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640162000265565b5060601c90565b611594806200167483390190565b600060208284031215620013c157600080fd5b5035919050565b600080600080848603610100811215620013e157600080fd5b853594506020860135935060a0603f1982011215620013ff57600080fd5b50929591945050604083019260e001359150565b6000815180845260005b818110156200143b576020818501810151868301820152016200141d565b506000602082860101526020601f19601f83011685010191505092915050565b85815284602082015260a0604082015260006200147c60a083018662001413565b828103606084015262001490818662001413565b91505060018060a01b03831660808301529695505050505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620014d457600080fd5b813567ffffffffffffffff80821115620014ed57600080fd5b818401915084601f8301126200150257600080fd5b813581811115620015175762001517620014ab565b604051601f8201601f19908116603f01168101908382118183101715620015425762001542620014ab565b816040528281528760208487010111156200155c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b8481528360208201526080604082015260006200159d608083018562001413565b8281036060840152620015b1818562001413565b979650505050505050565b801515811462000c6c57600080fd5b813581556020820135600182015560408201356002820155606082013560038201556004810160808301356200160181620015bc565b815490151560ff1660ff19919091161790555050565b600181811c908216806200162c57607f821691505b6020821081036200164d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200166657600080fd5b81356200047481620015bc56fe6101006040523480156200001257600080fd5b5060405162001594380380620015948339810160408190526200003591620002a0565b3360a081905260405163531657c160e11b81526004810183905263a62caf8290602401602060405180830381865afa15801562000076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009c9190620002ba565b620000ee5760405162461bcd60e51b815260206004820152601360248201527f6d75737420626520746f6b656e697a61626c650000000000000000000000000060448201526064015b60405180910390fd5b60a0516040516310b4955d60e01b8152600481018390526001600160a01b03909116906310b4955d90602401602060405180830381865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e9190620002ba565b15620001ad5760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c726561647900000000006044820152606401620000e5565b60808190524660c052620001c0620001ca565b60e05250620002e5565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620002056080516200026f60201b62000dd71760201c565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b600060208284031215620002b357600080fd5b5051919050565b600060208284031215620002cd57600080fd5b81518015158114620002de57600080fd5b9392505050565b60805160a05160c05160e0516112286200036c60003960006106bd0152600061068d0152600081816102a601528181610384015281816105ea015281816107910152818161089b0152610afd0152600081816102720152818161035b015281816105bd015281816107f00152818161086701528181610ad00152610e3001526112286000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806355b6ed5c11610097578063a457c2d711610066578063a457c2d7146101f1578063a9059cbb14610204578063d505accf14610217578063dd62ed3e1461022c57600080fd5b806355b6ed5c1461018e57806370a08231146101b65780637ecebe00146101c957806395d89b41146101e957600080fd5b806323b872dd116100d357806323b872dd14610151578063313ce567146101645780633644e51514610173578063395093511461017b57600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610263565b60405161010f9190610ee2565b60405180910390f35b61012b610126366004610f2d565b61031f565b604051901515815260200161010f565b61014361034c565b60405190815260200161010f565b61012b61015f366004610f59565b6103fc565b6040516012815260200161010f565b610143610689565b61012b610189366004610f2d565b6106df565b61014361019c366004610f9a565b600060208181529281526040808220909352908152205481565b6101436101c4366004610fd3565b61078d565b6101436101d7366004610fd3565b60016020526000908152604090205481565b610102610858565b61012b6101ff366004610f2d565b610915565b61012b610212366004610f2d565b6109c7565b61022a610225366004610ff7565b610b9a565b005b61014361023a366004610f9a565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205490565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610315919081019061110c565b5095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152902081905560015b92915050565b604051637104788560e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e208f10a90602401602060405180830381865afa1580156103d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f79190611198565b905090565b6000805160206111d383398151915254600090600119016104645760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000805160206111d383398151915255600082900361048457600080fd5b6001600160a01b038416600090815260208181526040808320338452909152902054828110156104ed5760405162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161045b565b60001981146105235761050083826111b1565b6001600160a01b0386166000908152602081815260408083203384529091529020555b60006105398660601b6001600160601b03191690565b905060006105518660601b6001600160601b03191690565b9050856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161059891815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b15801561063657600080fd5b505af115801561064a573d6000803e3d6000fd5b5050505060019350505050600161067e7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600301559392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146106ba576103f7610e08565b507f000000000000000000000000000000000000000000000000000000000000000090565b336000908152602081815260408083206001600160a01b0386168452909152812054829061070f906000196111b1565b101561075d5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015260640161045b565b50336000908152602081815260408083206001600160a01b03861684529091529020805482019055600192915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c9233016107d28460601b6001600160601b03191690565b6040516001600160e01b031960e084901b16815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006024820152604401602060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611198565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261090a919081019061110c565b509095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152812054828110156109955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161045b565b5050336000908152602081815260408083206001600160a01b0386168452909152902080548290039055600192915050565b6000805160206111d38339815191525460009060011901610a2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045b565b60026000805160206111d38339815191525560003360601b6001600160601b03191690506000610a648560601b6001600160601b03191690565b9050846001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610aab91815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506001925050506001610b907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6003015592915050565b42841015610bea5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161045b565b60006001610bf6610689565b6001600160a01b038a81166000818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98183015280840194909452938d166060840152608083018c905260a083015260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610cfd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610d335750876001600160a01b0316816001600160a01b0316145b610d705760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161045b565b6001600160a01b039081166000908152602081815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e547f0000000000000000000000000000000000000000000000000000000000000000610dd7565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60005b83811015610ed9578181015183820152602001610ec1565b50506000910152565b6020815260008251806020840152610f01816040850160208701610ebe565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610f2a57600080fd5b50565b60008060408385031215610f4057600080fd5b8235610f4b81610f15565b946020939093013593505050565b600080600060608486031215610f6e57600080fd5b8335610f7981610f15565b92506020840135610f8981610f15565b929592945050506040919091013590565b60008060408385031215610fad57600080fd5b8235610fb881610f15565b91506020830135610fc881610f15565b809150509250929050565b600060208284031215610fe557600080fd5b8135610ff081610f15565b9392505050565b600080600080600080600060e0888a03121561101257600080fd5b873561101d81610f15565b9650602088013561102d81610f15565b95506040880135945060608801359350608088013560ff8116811461105157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261109557600080fd5b815167ffffffffffffffff808211156110b0576110b061106e565b604051601f8301601f19908116603f011681019082821181831017156110d8576110d861106e565b816040528381528660208588010111156110f157600080fd5b611102846020830160208901610ebe565b9695505050505050565b600080600080600060a0868803121561112457600080fd5b8551945060208601519350604086015167ffffffffffffffff8082111561114a57600080fd5b61115689838a01611084565b9450606088015191508082111561116c57600080fd5b5061117988828901611084565b925050608086015161118a81610f15565b809150509295509295909350565b6000602082840312156111aa57600080fd5b5051919050565b8181038181111561034657634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcaa26469706673582212200c86a8f2175b34cd5b040596caac08bb7bde088ff58d324024bdb9bec75cb61a64736f6c634300081100331ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212201cec633ad6bf584d2e84854a9b1d5363546099de670988e5338f9b26ad8d844264736f6c63430008110033", + "nonce": "0x9b", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x487aeb6492fe4f6c415fb18cdbacba7835a188c3558d0c6a341e096c54909006", + "transactionType": "CREATE", + "contractName": "TokenizedVaultFacet", + "contractAddress": "0x6254eFd84cE152306448E2d10c4dF7DCE6C99765", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2238af", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50611e40806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aa47d5cb11610071578063aa47d5cb14610121578063ad747f2f14610134578063c978758914610147578063d588b1321461015a578063e208f10a1461016d578063ec7a37701461018057600080fd5b80631ed7db65146100ae57806333f6dfd8146100c35780635c923301146100d65780637baa1dde146100fb578063a6cd857d1461010e575b600080fd5b6100c16100bc366004611b64565b610193565b005b6100c16100d1366004611b96565b6102cf565b6100e96100e4366004611bc2565b610313565b60405190815260200160405180910390f35b6100e9610109366004611bc2565b610328565b6100c161011c366004611b96565b610334565b6100c161012f366004611bc2565b6103ff565b6100c1610142366004611bc2565b61059d565b6100c1610155366004611b96565b6105df565b6100e9610168366004611b96565b61066d565b6100e961017b366004611be4565b610684565b6100c161018e366004611b64565b61068f565b6000356001600160e01b0319166101a9816106e3565b156101cf5760405162461bcd60e51b81526004016101c690611bfd565b60405180910390fd5b60026101d9610721565b600301540361022a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b6002610234610721565b6003015582600061024482610745565b945050505050806001600160a01b0316336001600160a01b0316146102ab5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c7920777261707065722063616c6c7320616c6c6f77656400000000000060448201526064016101c6565b6102b7878787876108d9565b50505060016102c4610721565b600301555050505050565b6000356001600160e01b0319166102e5816106e3565b156103025760405162461bcd60e51b81526004016101c690611bfd565b61030d848484610b6d565b50505050565b600061031f8383610dea565b90505b92915050565b600061031f8383610e14565b6000356001600160e01b03191661034a816106e3565b156103675760405162461bcd60e51b81526004016101c690611bfd565b6002610371610721565b60030154036103c25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b60026103cc610721565b6003015560006103db33610e3f565b90506103e9818686866108d9565b505060016103f5610721565b6003015550505050565b6000356001600160e01b031916610415816106e3565b156104325760405162461bcd60e51b81526004016101c690611bfd565b61043b33610e3f565b6040518060400160405280601881526020017f506179204469766964656e642046726f6d20456e74697479000000000000000081525061048e8261047e83610e70565b61048733610e7b565b9190610e90565b6104ff5761049b33610e7b565b8260006104b1826104ab33610e7b565b90610eeb565b146104d0576104cb6104c6856104ab33610e7b565b610f16565b6104e1565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101c69493929190611c6f565b600061050a33610e3f565b9050600061051782610f47565b519050856105258383610dea565b10156105875760405162461bcd60e51b815260206004820152602b60248201527f7061794469766964656e6446726f6d456e746974793a20696e7375666669636960448201526a656e742062616c616e636560a81b60648201526084016101c6565b610594878384848a610fd2565b50505050505050565b6000356001600160e01b0319166105b3816106e3565b156105d05760405162461bcd60e51b81526004016101c690611bfd565b6105da83836112f6565b505050565b6000356001600160e01b0319166105f5816106e3565b156106125760405162461bcd60e51b81526004016101c690611bfd565b61061a6113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061064d8261047e83610e70565b61065a5761049b33610e7b565b6106658686866113d7565b505050505050565b600061067a848484611602565b90505b9392505050565b60006103228261168c565b6106976113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506106ca8261047e83610e70565b6106d75761049b33610e7b565b610594868686866108d9565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600080606080600080610756610721565b6000888152600a82016020908152604080832054600b8501835281842054600c86019093529220805492995090975091925061079190611ca0565b80601f01602080910402602001604051908101604052809291908181526020018280546107bd90611ca0565b801561080a5780601f106107df5761010080835404028352916020019161080a565b820191906000526020600020905b8154815290600101906020018083116107ed57829003601f168201915b50505060008a8152600d85016020526040902080549397509261082f92509050611ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461085b90611ca0565b80156108a85780601f1061087d576101008083540402835291602001916108a8565b820191906000526020600020905b81548152906001019060200180831161088b57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b6000806108e4610721565b600085815260158201602090815260408083208a84529091529020549091508311156109625760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101c6565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161099c91611cf0565b1015610a105760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101c6565b610a1a86856112f6565b6000848152601582016020908152604080832089845290915281208054859290610a45908490611cf0565b90915550506000848152601582016020908152604080832088845290915281208054859290610a75908490611d03565b90915550610a8990508686868660006116ac565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918891600080516020611deb8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918791600080516020611deb8339815191529181900360a00190a350600195945050505050565b6000610b77610721565b90506000610ba96040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b60008581526015840160209081526040808320898452909152812054919250610bd18661168c565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190610c1b85858585611880565b90508015610dde576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290610c56908490611d03565b90915550506000888152601588016020908152604080832089845290915281208054839290610c86908490611cf0565b9091555050600088815260158801602090815260408083208d845290915281208054839290610cb6908490611d03565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918891600080516020611deb8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c91600080516020611deb8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080610df5610721565b6000938452601501602090815260408085209585529490525050205490565b600080610e1f610721565b600094855260270160209081526040808620948652939052505090205490565b600080610e4a610721565b90506000610e5784610e7b565b6000908152600a90920160205250604090205492915050565b6000610322826118d0565b60601b6bffffffffffffffffffffffff191690565b6000610e9d8484846118eb565b15610eaa5750600161067d565b610eb584848461190d565b15610ec25750600161067d565b610ed484610ece6113a9565b8461190d565b15610ee15750600161067d565b5060009392505050565b600080610ef6610721565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610f7a610721565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600081116110225760405162461bcd60e51b815260206004820152601b60248201527f6469766964656e6420616d6f756e74206d757374206265203e2030000000000060448201526064016101c6565b61102b8261197d565b6110775760405162461bcd60e51b815260206004820181905260248201527f6d75737420626520737570706f72746564206469766964656e6420746f6b656e60448201526064016101c6565b611080856119bd565b156110e05760405162461bcd60e51b815260206004820152602a60248201527f6e6f6e756e69717565206469766964656e6420646973747269627574696f6e2060448201526934b232b73a34b334b2b960b11b60648201526084016101c6565b60006110ea610721565b9050600061111c6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b90506111278561168c565b6000036111405761113a868686866108d9565b5061129a565b61114c868286866108d9565b506000858152601b83016020908152604080832087845290915281208054859290611178908490611d03565b90915550506000858152601983016020908152604080832087845290915290205460ff161580156111c457506000858152601a8301602090815260408083208380529091529020548414155b1561129a576111d16119e0565b600086815260188401602052604090205460ff91909116116112355760405162461bcd60e51b815260206004820152601d60248201527f65786365656473206d6178206469762064656e6f6d696e6174696f6e7300000060448201526064016101c6565b6000858152601883016020818152604080842080546019880184528286208a87528452828620805460ff191660ff9283161790558a8652601a880184528286208254909116865283529084208890559181528154600181018355918352909120018490555b6112a3876119f8565b60408051878152602081018790529081018590526060810184905287907f79c99b7b895cb77cf516bfda80c5416e57f9e3811cd24fa42b139bf7b9ab29679060800160405180910390a250505050505050565b6000611300610721565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561135b57602002820191906000526020600020905b815481526020019060010190808311611347575b5050505050905060005b81518110156113a257611392858584848151811061138557611385611d16565b6020026020010151610b6d565b61139b81611d2c565b9050611365565b5050505050565b60006113d26040518060400160405280600681526020016553797374656d60d01b815250610e70565b905090565b60006113e1610721565b6000848152601582016020908152604080832088845290915290205490915082111561145b5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016101c6565b6000848152602782016020908152604080832086845282528083205460158501835281842088855290925290912054839161149591611cf0565b10156115095760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016101c6565b61151384846112f6565b600083815260168201602052604081208054849290611533908490611cf0565b90915550506000838152601582016020908152604080832087845290915281208054849290611563908490611cf0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916115ac91611d45565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611deb833981519152916115f491889190611d78565b60405180910390a350505050565b60008061160d610721565b600085815260158201602090815260408083208984529091528120549192506116358661168c565b6000878152601b8501602090815260408083208984528252808320548a8452601c880183528184208a855283528184208c8552909252909120549192509061167f84848484611880565b9998505050505050505050565b600080611697610721565b60009384526016016020525050604090205490565b60006116b6610721565b905060006116c38561168c565b600086815260188401602090815260408083208054825181850281018501909352808352949550929390929183018282801561171e57602002820191906000526020600020905b81548152602001906001019080831161170a575b5050505050905060005b815181101561187557600082828151811061174557611745611d16565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061177b89878484611880565b60008b8152601c89016020908152604080832087845282528083208f84529091528120805492935083929091906117b3908490611d03565b90915550508b156117f75760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906117f1908490611cf0565b90915550505b87156118615760008a8152601b8801602090815260408083208684529091529020548690611826908b90611db1565b6118309190611dc8565b60008b8152601b8901602090815260408083208784529091528120805490919061185b908490611d03565b90915550505b5050508061186e90611d2c565b9050611728565b505050505050505050565b60008061188d8685611db1565b9050600085156118a6576118a18683611dc8565b6118a9565b60005b9050808410156118c2576118bd8482611cf0565b6118c5565b60005b979650505050505050565b600081516000036118e357506000919050565b506020015190565b6000806118f785611adf565b905061190481858561190d565b95945050505050565b600080611918610721565b6000868152601f820160209081526040808320888452909152902054909150801580159061196157506000818152601d83016020908152604080832087845290915290205460ff165b156119715760019250505061067d565b50600095945050505050565b600080611988610721565b905080601301600061199985611aff565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000806119c8610721565b60009384526009016020525050604090205460ff1690565b6000806119eb610721565b6017015460ff1692915050565b6000611a02610721565b600083815260098201602052604090205490915060ff1615611a7f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101c6565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b600080611aea610721565b6000938452600a016020525050604090205490565b60006bffffffffffffffffffffffff821615611b5d5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016101c6565b5060601c90565b60008060008060808587031215611b7a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611bab57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611bd557600080fd5b50508035926020909101359150565b600060208284031215611bf657600080fd5b5035919050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b81811015611c4f57602081850181015186830182015201611c33565b506000602082860101526020601f19601f83011685010191505092915050565b848152836020820152608060408201526000611c8e6080830185611c29565b82810360608401526118c58185611c29565b600181811c90821680611cb457607f821691505b602082108103611cd457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032257610322611cda565b8082018082111561032257610322611cda565b634e487b7160e01b600052603260045260246000fd5b600060018201611d3e57611d3e611cda565b5060010190565b81815260406020820152600061031f60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061067a60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b808202811582820484141761032257610322611cda565b600082611de557634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220c76ca0c882bfa45b386f8292617eff197ebaff97f26b05c6dbe13a7b5bbc394c64736f6c63430008110033", + "nonce": "0x9c", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xddff632ab38e431289502ce39590e6d81b930bb582131505717b5e36f76a2922", + "transactionType": "CREATE", + "contractName": "TokenizedVaultIOFacet", + "contractAddress": "0x8fe69c524112F080A15d409f7c68B56248541266", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x1bcfdd", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50611868806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313b747601461003b5780639bda867814610050575b600080fd5b61004e610049366004611548565b610063565b005b61004e61005e36600461158c565b610291565b6000356001600160e01b03191661007981610476565b156100c05760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026100ca6104b4565b600301540361011b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b60026101256104b4565b60030155610132336104d8565b6040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e746974790000008152506101858261017583610509565b61017e3361051a565b919061052f565b6101f6576101923361051a565b8260006101a8826101a23361051a565b9061058b565b146101c7576101c26101bd856101a23361051a565b6105b6565b6101d8565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016100b79493929190611606565b6102466102028761051a565b886102416040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e74697479000000815250610509565b61052f565b61026e57604051635e81202760e01b81526001600160a01b03871660048201526024016100b7565b61027a878787876105e7565b505060016102866104b4565b600301555050505050565b6000356001600160e01b0319166102a781610476565b156102e95760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016100b7565b60026102f36104b4565b60030154036103445760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b600261034e6104b4565b6003015561035b336104d8565b6040518060400160405280601081526020016f115e1d195c9b985b0811195c1bdcda5d60821b8152506103918261017583610509565b61039e576101923361051a565b6103a785610632565b6103f35760405162461bcd60e51b815260206004820152601f60248201527f6578744465706f7369743a20696e76616c696420455243323020746f6b656e0060448201526064016100b7565b60006103fe336104d8565b905061040981610662565b6104555760405162461bcd60e51b815260206004820152601c60248201527f6578744465706f7369743a20696e76616c69642072656365697665720000000060448201526064016100b7565b610460818787610685565b505050600161046d6104b4565b60030155505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806104e36104b4565b905060006104f08461051a565b6000908152600a90920160205250604090205492915050565b6000610514826106fd565b92915050565b60601b6bffffffffffffffffffffffff191690565b600061053c848484610718565b1561054957506001610584565b61055484848461073a565b1561056157506001610584565b6105738461056d6107aa565b8461073a565b1561058057506001610584565b5060005b9392505050565b6000806105966104b4565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b806000036106085760405163959ed6e560e01b815260040160405180910390fd5b60006106138361051a565b90506106208582846107d8565b61062b838584610a03565b5050505050565b60008061063d6104b4565b6001600160a01b03909316600090815260139093016020525050604090205460ff1690565b60008061066d6104b4565b6000938452600f016020525050604090205460ff1690565b806000036106a65760405163806daf1160e01b815260040160405180910390fd5b60006106b18361051a565b905060006106bf8430610ab9565b90506106cd84333086610bda565b60006106d98530610ab9565b905060006106e7838361164d565b90506106f4878583610ca0565b50505050505050565b6000815160000361071057506000919050565b506020015190565b60008061072485610e48565b905061073181858561073a565b95945050505050565b6000806107456104b4565b6000868152601f820160209081526040808320888452909152902054909150801580159061078e57506000818152601d83016020908152604080832087845290915290205460ff165b1561079e57600192505050610584565b50600095945050505050565b60006107d36040518060400160405280600681526020016553797374656d60d01b815250610509565b905090565b60006107e26104b4565b6000848152601582016020908152604080832088845290915290205490915082111561085c5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016100b7565b600084815260278201602090815260408083208684528252808320546015850183528184208885529092529091205483916108969161164d565b101561090a5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016100b7565b6109148484610e68565b60008381526016820160205260408120805484929061093490849061164d565b9091555050600083815260158201602090815260408083208784529091528120805484929061096490849061164d565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916109ad91611660565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f591889190611693565b60405180910390a350505050565b610a0c83610f14565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610a6891906116d4565b6000604051808303816000865af19150503d8060008114610aa5576040519150601f19603f3d011682016040523d82523d6000602084013e610aaa565b606091505b509150915061062b8282610f79565b6000610ac483610f14565b604080516001600160a01b0384811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092839290871691610b1c91906116d4565b6000604051808303816000865af19150503d8060008114610b59576040519150601f19603f3d011682016040523d82523d6000602084013e610b5e565b606091505b50915091508115610b865780806020019051810190610b7d91906116f0565b92505050610514565b60405162461bcd60e51b8152602060048201526024808201527f4c696245524332303a2063616c6c20746f2062616c616e63654f6628292066616044820152631a5b195960e21b60648201526084016100b7565b610be384610f14565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610c4791906116d4565b6000604051808303816000865af19150503d8060008114610c84576040519150601f19603f3d011682016040523d82523d6000602084013e610c89565b606091505b5091509150610c988282610f79565b505050505050565b82600003610cfc5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b60648201526084016100b7565b60008111610d4c5760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e730060448201526064016100b7565b6000610d566104b4565b9050610d676000858585600161106b565b600083815260168201602052604081208054849290610d87908490611709565b90915550506000838152601582016020908152604080832087845290915281208054849290610db7908490611709565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091610e009161171c565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f59188919061174f565b600080610e536104b4565b6000938452600a016020525050604090205490565b6000610e726104b4565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015610ecd57602002820191906000526020600020905b815481526020019060010190808311610eb9575b5050505050905060005b815181101561062b57610f048585848481518110610ef757610ef7611788565b602002602001015161123f565b610f0d8161179e565b9050610ed7565b803b80610f755760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b60648201526084016100b7565b5050565b811561100057805115610f755780806020019051810190610f9a91906117b7565b610f755760405162461bcd60e51b815260206004820152603160248201527f4c696245524332303a207472616e73666572206f72207472616e7366657246726044820152706f6d2072657475726e65642066616c736560781b60648201526084016100b7565b80511561100f57805181602001fd5b60405162461bcd60e51b815260206004820152602b60248201527f4c696245524332303a207472616e73666572206f72207472616e73666572467260448201526a1bdb481c995d995c9d195960aa1b60648201526084016100b7565b60006110756104b4565b90506000611082856114bc565b60008681526018840160209081526040808320805482518185028101850190935280835294955092939092918301828280156110dd57602002820191906000526020600020905b8154815260200190600101908083116110c9575b5050505050905060005b815181101561123457600082828151811061110457611104611788565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061113a898784846114dc565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611172908490611709565b90915550508b156111b65760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906111b090849061164d565b90915550505b87156112205760008a8152601b88016020908152604080832086845290915290205486906111e5908b906117d9565b6111ef91906117f0565b60008b8152601b8901602090815260408083208784529091528120805490919061121a908490611709565b90915550505b5050508061122d9061179e565b90506110e7565b505050505050505050565b60006112496104b4565b9050600061127b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610509565b600085815260158401602090815260408083208984529091528120549192506112a3866114bc565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c855290925282205492935091906112ed858585856114dc565b905080156114b0576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290611328908490611709565b9091555050600088815260158801602090815260408083208984529091528120805483929061135890849061164d565b9091555050600088815260158801602090815260408083208d845290915281208054839290611388908490611709565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206118138339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206118138339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b6000806114c76104b4565b60009384526016016020525050604090205490565b6000806114e986856117d9565b905060008515611502576114fd86836117f0565b611505565b60005b90508084101561151e57611519848261164d565b611521565b60005b979650505050505050565b80356001600160a01b038116811461154357600080fd5b919050565b6000806000806080858703121561155e57600080fd5b8435935061156e6020860161152c565b925061157c6040860161152c565b9396929550929360600135925050565b6000806040838503121561159f57600080fd5b6115a88361152c565b946020939093013593505050565b60005b838110156115d15781810151838201526020016115b9565b50506000910152565b600081518084526115f28160208601602086016115b6565b601f01601f19169290920160200192915050565b84815283602082015260806040820152600061162560808301856115da565b828103606084015261152181856115da565b634e487b7160e01b600052601160045260246000fd5b8181038181111561051457610514611637565b81815260406020820152600061058460408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b949350505050565b600082516116e68184602087016115b6565b9190910192915050565b60006020828403121561170257600080fd5b5051919050565b8082018082111561051457610514611637565b81815260406020820152600061058460408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6000600182016117b0576117b0611637565b5060010190565b6000602082840312156117c957600080fd5b8151801515811461058457600080fd5b808202811582820484141761051457610514611637565b60008261180d57634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220e323c0b7b09bc0df683e4a3f7d17b66ea0ed3195031fa630c20c6f8deedaeafc64736f6c63430008110033", + "nonce": "0x9d", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x97cee138978692be5f50fe8874350c8aba974b0e2695c57141895d9ee0a8f811", + "transactionType": "CREATE", + "contractName": "UserFacet", + "contractAddress": "0x65C37f11879ab9aBAB518457e665C45AaF074DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x818d9", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061066c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633f1b887f1461005157806353b66f36146100815780639cb481b2146100a2578063afab5f15146100b5575b600080fd5b61006461005f366004610550565b6100ca565b6040516001600160a01b0390911681526020015b60405180910390f35b61009461008f366004610550565b6100db565b604051908152602001610078565b6100946100b0366004610569565b61010e565b6100c86100c3366004610592565b610124565b005b60006100d58261028e565b92915050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546100d5565b60006100d58260601b6001600160601b03191690565b61012c6102f3565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506101768261016183610321565b6001600160601b03193360601b16919061032c565b61022d573360601b6001600160601b0319168260006101cc82845b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b146101f5576101f06101eb856001600160601b03193360601b16610191565b610388565b610206565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161022494939291906105fa565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460ff1661027e5760405163e1f8801360e01b815260048101849052602401610224565b61028884846103b9565b50505050565b60006bffffffffffffffffffffffff8216156102ec5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610224565b5060601c90565b600061031c6040518060400160405280600681526020016553797374656d60d01b815250610321565b905090565b60006100d582610452565b600061033984848461046d565b1561034657506001610381565b6103518484846104af565b1561035e57506001610381565b6103708461036a6102f3565b846104af565b1561037d57506001610381565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020908152604080832084905580518581529182018490528181019290925290517f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7917f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab5919081900360600190a1505050565b6000815160000361046557506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546104a68185856104af565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790801580159061053457506000818152601d83016020908152604080832087845290915290205460ff165b1561054457600192505050610381565b50600095945050505050565b60006020828403121561056257600080fd5b5035919050565b60006020828403121561057b57600080fd5b81356001600160a01b038116811461038157600080fd5b600080604083850312156105a557600080fd5b50508035926020909101359150565b6000815180845260005b818110156105da576020818501810151868301820152016105be565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061061960808301856105b4565b828103606084015261062b81856105b4565b97965050505050505056fea2646970667358221220823108a3a341d14f045fe1e4bcdfbc76d2aac3ba7bf549787e62867e6606e0de64736f6c63430008110033", + "nonce": "0x9e", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0x03f421f721386b2c3e6156bb6e4bd3f9d9c7c2a854d955395c34a75971018e2a", + "0x8523e34459e7f2063545b739430e5aae7c90d33b3544e1656dfe3ef4545e241e", + "0xad2628f9093eecae72c4c70466d82751f30caed30312ac3a5a910686ca2ab336", + "0x7281b30ceb6715e3fe8f504fa9c474767c361390969652fc08d6c6ebb479aae0", + "0xeedafdb736d3eee4196d2b3b1f5f147c7f4af2b615a28b6a0864032db5aa4337", + "0x2bfb4809138835d58f8dc033de004aab841dbfdbf32d0086123c2421d1c59778", + "0x1abb1f61ba05344031110eb18ef39ece504e3f5a05745e8f26fdde9c0002ddce", + "0x9ef1b894b371c25376cd287ea07a2b8a8926960479ab9375fac49805fbeb257c", + "0x487aeb6492fe4f6c415fb18cdbacba7835a188c3558d0c6a341e096c54909006", + "0xddff632ab38e431289502ce39590e6d81b930bb582131505717b5e36f76a2922", + "0x97cee138978692be5f50fe8874350c8aba974b0e2695c57141895d9ee0a8f811" + ], + "returns": { + "diamondAddress": { + "internal_type": "address", + "value": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B" + }, + "cut": { + "internal_type": "struct IDiamondCut.FacetCut[]", + "value": "[(0x0538812C252058083Aa2b13d425f11610C404C25, 1, [0x5e1ac8fa, 0x1219dee2, 0xaf76f046, 0x47c07483, 0xd774b4e3, 0xc8422402, 0x7273e796, 0xc1b2bc96, 0x6362aeb4, 0xff3406ce]), (0x0538812C252058083Aa2b13d425f11610C404C25, 0, [0x373df694]), (0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71, 1, [0xce498e84, 0xcb429501, 0xe9f0273c, 0xbdd2620a, 0xeb75c8e8, 0xe6a19df2, 0xa62caf82, 0xa0069289, 0xa246e7a8, 0x34531828, 0xf1ebc810, 0xebc526dc, 0x5c74d6a4, 0x7bf96b68, 0x7f09d085]), (0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788, 1, [0x04e2e500, 0x78e890ba, 0xf17d17f4, 0xedd2133b, 0xa1a2e295, 0x4980f288, 0x10b4955d, 0xa2e4569b, 0x73abdfa5, 0x60f58edf]), (0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A, 1, [0x337781ea, 0x1d510217, 0x22f153db, 0x371d6244]), (0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A, 0, [0xe13b9b14, 0x10a2bbed]), (0x194A3fDc437b5398E4F334940aBBe278491D1378, 1, [0x012ee17b, 0xef706adf, 0x9df00480, 0x4c8198dc, 0x59e148fc, 0x810a374d, 0x4579268a, 0x8d81a1d3]), (0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca, 1, [0x70a08231, 0x18160ddd]), (0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030, 1, [0x1add96f6, 0x23eaabe3, 0x00bae173, 0xf3253b5f, 0xc3ab48cb, 0xe8b3fb3c, 0x7d292605]), (0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030, 0, [0x0a27162a]), (0x217C1d6D6a72925918a644d67dcb0c3760b81E08, 1, [0x53733f97, 0xcf0ccf9e, 0x524d8dd5, 0xcfb51928, 0x7dfcdf2a]), (0x6254eFd84cE152306448E2d10c4dF7DCE6C99765, 1, [0x7baa1dde, 0xd588b132, 0x5c923301, 0xc9787589, 0xe208f10a, 0xec7a3770, 0xa6cd857d, 0xaa47d5cb, 0xad747f2f, 0x33f6dfd8, 0x1ed7db65]), (0x8fe69c524112F080A15d409f7c68B56248541266, 1, [0x9bda8678, 0x13b74760]), (0x65C37f11879ab9aBAB518457e665C45AaF074DB7, 1, [0x3f1b887f, 0x53b66f36, 0x9cb481b2, 0xafab5f15])]" + }, + "initDiamondAddress": { + "internal_type": "address", + "value": "0x0000000000000000000000000000000000000000" + }, + "upgradeHash": { + "internal_type": "bytes32", + "value": "0x5d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf6170" + } + }, + "timestamp": 1697190766, + "chain": 11155111, + "multi": false, + "commit": "13da7ed8" +} \ No newline at end of file diff --git a/broadcast/SmartDeploy.s.sol/11155111/run-1697190786.json b/broadcast/SmartDeploy.s.sol/11155111/run-1697190786.json new file mode 100644 index 00000000..3cebbb38 --- /dev/null +++ b/broadcast/SmartDeploy.s.sol/11155111/run-1697190786.json @@ -0,0 +1,415 @@ +{ + "transactions": [ + { + "hash": "0x03f421f721386b2c3e6156bb6e4bd3f9d9c7c2a854d955395c34a75971018e2a", + "transactionType": "CREATE", + "contractName": "ACLFacet", + "contractAddress": "0x0538812C252058083Aa2b13d425f11610C404C25", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x16a4d6", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506113b0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637273e796116100715780637273e79614610132578063af76f04614610145578063c1b2bc9614610158578063c84224021461016b578063d774b4e31461017e578063ff3406ce1461019157600080fd5b80631219dee2146100ae578063373df694146100d657806347c07483146100e95780635e1ac8fa1461010a5780636362aeb41461011f575b600080fd5b6100c16100bc366004610fe3565b6101a4565b60405190151581526020015b60405180910390f35b6100c16100e436600461103d565b6101c5565b6100fc6100f7366004611069565b6101dc565b6040519081526020016100cd565b61011d61011836600461108b565b6101e8565b005b61011d61012d3660046110db565b6102c6565b6100c16101403660046110db565b610392565b6100c16101533660046110db565b61039e565b61011d610166366004611069565b6103aa565b6100c161017936600461108b565b610420565b6100c161018c36600461108b565b610435565b61011d61019f36600461113f565b61044a565b60006101ba8585856101b586610527565b610538565b90505b949350505050565b60006101d2848484610606565b90505b9392505050565b60006101d58383610661565b60006101f33361069d565b90506102048185856101b586610527565b61024e5760405162461bcd60e51b815260206004820152601660248201527506e6f7420696e2061737369676e6572732067726f75760541b60448201526064015b60405180910390fd5b600061025a8585610661565b90508015801590610274575061027282868684610538565b155b156102a257818585610285846106b2565b60405163065708d560e31b8152600401610245949392919061120c565b6102ac85856106e3565b6102bf85856102ba86610527565b610844565b5050505050565b6102ce610afc565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103118261030183610527565b61030a3361069d565b9190610606565b6103825761031e3361069d565b8260006103348261032e3361069d565b90610661565b146103535761034e6103498561032e3361069d565b6106b2565b610364565b604051806020016040528060008152505b83604051630696a9cb60e51b8152600401610245949392919061123b565b61038c8484610b2a565b50505050565b60006101d58383610bf3565b60006101d58383610c64565b60006103b68383610661565b905060006103c33361069d565b90506103d181858585610538565b6104165760405162461bcd60e51b815260206004820152601660248201527506e6f7420696e2061737369676e6572732067726f75760541b6044820152606401610245565b61038c84846106e3565b60006101d2848461043085610527565b610ca6565b60006101d2848461044585610527565b610ce8565b610452610afc565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104858261030183610527565b6104925761031e3361069d565b6104c1846040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610d77565b1561051c5760405162461bcd60e51b815260206004820152602560248201527f73797374656d2061646d696e732067726f7570206973206e6f74206d6f6469666044820152646961626c6560d81b6064820152608401610245565b6102bf858585610dd0565b600061053282610ec0565b92915050565b60008360000361057e5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b6044820152606401610245565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe5602052604090205460008051602061135b833981519152906105c7878683610ce8565b156105d7576001925050506101bd565b6105e9876105e3610afc565b83610ce8565b156105f9576001925050506101bd565b5060009695505050505050565b6000610613848484610ca6565b15610620575060016101d5565b61062b848484610ce8565b15610638575060016101d5565b61064a84610644610afc565b84610ce8565b15610657575060016101d5565b5060009392505050565b60009182527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080842092845291905290205490565b60601b6bffffffffffffffffffffffff191690565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832084845290915290205460008051602061135b83398151915290610734610afc565b8314801561076d575061076a6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b81145b156107a357600182602a0154116107965760405162461bcd60e51b815260040161024590611277565b602a820180546000190190555b6000848152601f8301602090815260408083208684529091529081902054905185917f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9161081e918782526020820152606060408201819052600d908201526c5f756e61737369676e526f6c6560981b608082015260a00190565b60405180910390a2506000928352601f0160209081526040808420928452919052812055565b60008051602061135b83398151915260008490036108985760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b6044820152606401610245565b826000036108dd5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b6044820152606401610245565b8160000361091f5760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b6044820152606401610245565b6000848152601f820160209081526040808320868452909152902054610943610afc565b8414801561097c57506109796040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b81145b80156109885750828114155b156109be57600182602a0154116109b15760405162461bcd60e51b815260040161024590611277565b602a820180546000190190555b6109c6610afc565b841480156109ff57506109fc6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b83145b15610a7a57610a0d85610edb565b6001600160a01b0316610a477fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603610a6e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060818301819052600b908201526a5f61737369676e526f6c6560a81b6080820152905186917f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e919081900360a00190a25050505050565b6000610b256040518060400160405280600681526020016553797374656d60d01b815250610527565b905090565b610b33826112ba565b600003610b53576040516305ccaaf160e41b815260040160405180910390fd5b610b5c816112ba565b600003610b7c57604051630db0d26760e21b815260040160405180910390fd5b60008051602061135b833981519152610b9482610527565b81601e016000610ba386610527565b8152602001908152602001600020819055507f736c56e4bb16c438047d822d53251d5034edf27808ac582857e8863b898c95298383604051610be69291906112e1565b60405180910390a1505050565b600060008051602061135b8339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe482610c2f86610527565b81526020019081526020016000206000610c4885610527565b815260208101919091526040016000205460ff16949350505050565b600060008051602061135b833981519152610c7e83610527565b81601e016000610c8d87610527565b8152602001908152602001600020541491505092915050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054610cdf818585610ce8565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602061135b833981519152908015801590610d5b57506000818152601d83016020908152604080832087845290915290205460ff165b15610d6b576001925050506101d5565b50600095945050505050565b600081604051602001610d8a9190611306565b6040516020818303038152906040528051906020012083604051602001610db19190611306565b6040516020818303038152906040528051906020012014905092915050565b60008051602061135b833981519152610de8846112ba565b600003610e08576040516305ccaaf160e41b815260040160405180910390fd5b610e11836112ba565b600003610e3157604051630db0d26760e21b815260040160405180910390fd5b8181601d016000610e4187610527565b81526020019081526020016000206000610e5a86610527565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6f94e7b578c4524a9c142c004ba6682c061019130e377a6f81d31792a25b7bcc848484604051610eb293929190611322565b60405180910390a150505050565b60008151600003610ed357506000919050565b506020015190565b60006bffffffffffffffffffffffff821615610f395760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610245565b5060601c90565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610f6757600080fd5b813567ffffffffffffffff80821115610f8257610f82610f40565b604051601f8301601f19908116603f01168101908282118183101715610faa57610faa610f40565b81604052838152866020858801011115610fc357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215610ff957600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff81111561102557600080fd5b61103187828801610f56565b91505092959194509250565b60008060006060848603121561105257600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561107c57600080fd5b50508035926020909101359150565b6000806000606084860312156110a057600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156110c557600080fd5b6110d186828701610f56565b9150509250925092565b600080604083850312156110ee57600080fd5b823567ffffffffffffffff8082111561110657600080fd5b61111286838701610f56565b9350602085013591508082111561112857600080fd5b5061113585828601610f56565b9150509250929050565b60008060006060848603121561115457600080fd5b833567ffffffffffffffff8082111561116c57600080fd5b61117887838801610f56565b9450602086013591508082111561118e57600080fd5b5061119b86828701610f56565b925050604084013580151581146111b157600080fd5b809150509250925092565b60005b838110156111d75781810151838201526020016111bf565b50506000910152565b600081518084526111f88160208601602086016111bc565b601f01601f19169290920160200192915050565b84815283602082015282604082015260806060820152600061123160808301846111e0565b9695505050505050565b84815283602082015260806040820152600061125a60808301856111e0565b828103606084015261126c81856111e0565b979650505050505050565b60208082526023908201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460408201526236b4b760e91b606082015260800190565b805160208083015191908110156112db576000198160200360031b1b821691505b50919050565b6040815260006112f460408301856111e0565b8281036020840152610cdf81856111e0565b600082516113188184602087016111bc565b9190910192915050565b60608152600061133560608301866111e0565b828103602084015261134781866111e0565b915050821515604083015294935050505056fe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220e21f372d4c766f7f6831a9f8bbdf34d04a474929b32141982e2542379383f28a64736f6c63430008110033", + "nonce": "0x94", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8523e34459e7f2063545b739430e5aae7c90d33b3544e1656dfe3ef4545e241e", + "transactionType": "CREATE", + "contractName": "AdminFacet", + "contractAddress": "0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2cec23", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506127fe806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063bdd2620a11610097578063e9f0273c11610066578063e9f0273c146101ce578063eb75c8e814610202578063ebc526dc14610218578063f1ebc8101461022b57600080fd5b8063bdd2620a14610180578063cb42950114610195578063ce498e84146101a8578063e6a19df2146101bb57600080fd5b80637f09d085116100d35780637f09d0851461012a578063a00692891461013d578063a246e7a814610165578063a62caf821461016d57600080fd5b806334531828146100fa5780635c74d6a41461010f5780637bf96b6814610122575b600080fd5b61010d61010836600461226f565b61023e565b005b61010d61011d3660046122a8565b610346565b61010d610397565b61010d61013836600461226f565b6103eb565b61015061014b3660046122c5565b61043c565b60405190151581526020015b60405180910390f35b61010d61044d565b61015061017b3660046122c5565b61049d565b6101886104a8565b60405161015c91906122de565b61010d6101a336600461232b565b6104b7565b61010d6101b63660046123a0565b610508565b6101506101c936600461226f565b610568565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde5460405160ff909116815260200161015c565b61020a610597565b60405190815260200161015c565b61010d610226366004612423565b6105a1565b61010d610239366004612447565b6105f2565b61024661064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610289826102798361066f565b6102823361067a565b919061068f565b610338576102963361067a565b8260006102e1826102a63361067a565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b14610300576102fb6102f6856102a63361067a565b6106eb565b610311565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161032f94939291906124b9565b60405180910390fd5b6103418361071c565b505050565b61034e61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610381826102798361066f565b61038e576102963361067a565b610341836107db565b61039f61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103d2826102798361066f565b6103df576102963361067a565b6103e76108c8565b5050565b6103f361064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610426826102798361066f565b610433576102963361067a565b61034183610e6d565b600061044782610f1a565b92915050565b61045561064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610488826102798361066f565b610495576102963361067a565b6103e7610f7a565b600061044782611531565b60606104b2611584565b905090565b6104bf61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104f2826102798361066f565b6104ff576102963361067a565b610341836115f7565b61051061064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610543826102798361066f565b610550576102963361067a565b61055e888888888888611869565b5050505050505050565b6001600160e01b031981166000908152600080516020612789833981519152602052604081205460ff16610447565b60006104b261064a565b6105a961064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506105dc826102798361066f565b6105e9576102963361067a565b61034183611aa4565b6105fa61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061062d826102798361066f565b61063a576102963361067a565b6106448484611b5a565b50505050565b60006104b26040518060400160405280600681526020016553797374656d60d01b8152505b600061044782611c0e565b60601b6bffffffffffffffffffffffff191690565b600061069c848484611c29565b156106a9575060016106e4565b6106b4848484611c6b565b156106c1575060016106e4565b6106d3846106cd61064a565b84611c6b565b156106e0575060016106e4565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff1916600190811790915581518181528083019092529293929091828101908036833701905050905082816000815181106107855761078561250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b054906107ce908390612521565b60405180910390a1505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde546000805160206127a98339815191529060ff908116908316811061087a5760405162461bcd60e51b815260206004820152602e60248201527f5f7570646174654d61784469766964656e6444656e6f6d696e6174696f6e733a60448201526d2063616e6e6f742072656475636560901b606482015260840161032f565b60178201805460ff191660ff85811691821790925560408051928416835260208301919091527fe09b1c2d8d49f7249034d44d8dd27508c3f0a430a2df509300042437a4c46cf591016107ce565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce3805460ff199081169091557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c87188054821690557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e2744939278054821690557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c28054821690557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c8054821690557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe4990878054821690557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec695687228054821690557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a34018054821690557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c8054821690557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec638054821690557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb069998054821690557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e8054821690557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b8280548216905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b1805490921690915560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b81600081518110610b4f57610b4f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b9082906001908110610b8657610b8661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b9082906002908110610bbd57610bbd61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b9082906003908110610bf357610bf361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b9082906004908110610c2a57610c2a61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b9082906005908110610c6157610c6161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b9082906006908110610c9857610c9861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b9082906007908110610ccf57610ccf61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b9082906008908110610d0657610d0661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b9082906009908110610d3d57610d3d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a908110610d7457610d7461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b908110610dab57610dab61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c908110610de157610de161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d908110610e1857610e1861250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d117551490610e61908390612521565b60405180910390a15050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff19169055805160018082528183019092529293929182810190803683370190505090508281600081518110610ed157610ed161250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d1175514906107ce908390612521565b60006000805160206127a98339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda82610f5685611cfa565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce38054600160ff1991821681179092557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c871880548216831790557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e27449392780548216831790557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c280548216831790557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c80548216831790557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe49908780548216831790557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec6956872280548216831790557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a340180548216831790557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c80548216831790557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec6380548216831790557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb0699980548216831790557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e80548216831790557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b82805482168317905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b18054909216909217905560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b8160008151811061121f5761121f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b90829060019081106112565761125661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b908290600290811061128d5761128d61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b90829060039081106112c3576112c361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b90829060049081106112fa576112fa61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b90829060059081106113315761133161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b90829060069081106113685761136861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b908290600790811061139f5761139f61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b90829060089081106113d6576113d661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b908290600990811061140d5761140d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a9081106114445761144461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b90811061147b5761147b61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c9081106114b1576114b161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d9081106114e8576114e861250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b05490610e61908390612521565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd36020526040812080546000805160206127a9833981519152919061157a90612563565b1515949350505050565b606060006000805160206127a9833981519152601481018054604080516020808402820181019092528281529394508301828280156115ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115ce575b505050505091505090565b601261160282611d5f565b60ff16111561162457604051630f4051bd60e11b815260040160405180910390fd5b6001600160a01b03811660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda60205260409020546000805160206127a98339815191529060ff16156116bc5760405162461bcd60e51b815260206004820152601c60248201527f65787465726e616c20746f6b656e20616c726561647920616464656400000000604482015260640161032f565b6001600160a01b0382166000908152602b820160205260409020541561173f5760405162461bcd60e51b815260206004820152603260248201527f63616e6e6f74206164642070617274696369706174696f6e20746f6b656e20776044820152711c985c1c195c88185cc8195e1d195c9b985b60721b606482015260840161032f565b600061174a83611e6a565b905061175581611f6b565b6117a15760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161032f565b6001600160a01b03831660009081526013830160205260408120805460ff191660011790556117cf8461067a565b90506117da81611fc8565b601483018054600181018255600091825260209091200180546001600160a01b0319166001600160a01b0386161790556040518190602c85019061181f90859061259d565b908152604051908190036020018120919091556001600160a01b038516907fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d790600090a250505050565b6000805160206127a98339815191528184146118d35760405162461bcd60e51b815260206004820152602360248201527f72656365697665727320616e6420626173697320706f696e7473206d69736d616044820152620e8c6d60eb1b606482015260840161032f565b6000878152602d8201602090815260408083208984529091528120906118f98282612129565b61190760018301600061214a565b5050604080516060602087028083018201845292820187815260009383928a918a91829190860190849080828437600092019190915250505090825250604080516020878102828101820190935287825292830192909188918891829185019084908082843760009201829052509390945250508251519293509050805b828110156119cc57836020015181815181106119a3576119a361250b565b602002602001015161ffff16826119ba91906125cf565b91506119c5816125e2565b9050611985565b506119da60026127106125fb565b811115611a1157806119ef60026127106125fb565b6040516309281e0960e01b81526004810192909252602482015260440161032f565b60008a8152602d8501602090815260408083208c84528252909120845180518693611a4092849291019061216f565b506020828101518051611a5992600185019201906121ba565b509050507f8e22c2013153bfc59463ca08bb8cb31dd13119bf9ce2eee71d7a13069b50fc408a8a85604051611a909392919061261d565b60405180910390a150505050505050505050565b6000805160206127a9833981519152611ac060026127106125fb565b8261ffff161115611afe5781611ad960026127106125fb565b6040516309281e0960e01b815261ffff9092166004830152602482015260440161032f565b60268101805469ffff000000000000000019166801000000000000000061ffff8516908102919091179091556040519081527f92a4a904f938dda530a8218ca590b5c9fba2153905fd0396f1bff1dd499a543f90602001610e61565b81611ba75760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f742072656d6f76652064656661756c742066656573000000000000604482015260640161032f565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff46020908152604080832084845290915281206000805160206127a983398151915291611bf98282612129565b611c0760018301600061214a565b5050505050565b60008151600003611c2157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054611c62818585611c6b565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206127a9833981519152908015801590611cde57506000818152601d83016020908152604080832087845290915290205460ff165b15611cee576001925050506106e4565b50600095945050505050565b60006bffffffffffffffffffffffff821615611d585760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161032f565b5060601c90565b6000611d6a826120c8565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b03861691611dad9161259d565b6000604051808303816000865af19150503d8060008114611dea576040519150601f19603f3d011682016040523d82523d6000602084013e611def565b606091505b50915091508115611e165780806020019051810190611e0e91906126c9565b949350505050565b60405162461bcd60e51b815260206004820152602360248201527f4c696245524332303a2063616c6c20746f20646563696d616c732829206661696044820152621b195960ea1b606482015260840161032f565b6060611e75826120c8565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160009182916001600160a01b03861691611eb89161259d565b6000604051808303816000865af19150503d8060008114611ef5576040519150601f19603f3d011682016040523d82523d6000602084013e611efa565b606091505b50915091508115611f195780806020019051810190611e0e91906126e6565b60405162461bcd60e51b815260206004820152602160248201527f4c696245524332303a2063616c6c20746f2073796d626f6c2829206661696c656044820152601960fa1b606482015260840161032f565b6040516000906000805160206127a98339815191529082907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff390611fb090869061259d565b90815260200160405180910390205414915050919050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd060205260409020546000805160206127a98339815191529060ff161561206f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161032f565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b90606001610e61565b803b806103e75760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b606482015260840161032f565b5080546000825590600052602060002090810190612147919061225a565b50565b50805460008255600f016010900490600052602060002090810190612147919061225a565b8280548282559060005260206000209081019282156121aa579160200282015b828111156121aa57825182559160200191906001019061218f565b506121b692915061225a565b5090565b82805482825590600052602060002090600f016010900481019282156121aa5791602002820160005b8382111561222357835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026121e3565b80156122515782816101000a81549061ffff0219169055600201602081600101049283019260010302612223565b50506121b69291505b5b808211156121b6576000815560010161225b565b60006020828403121561228157600080fd5b81356001600160e01b0319811681146106e457600080fd5b60ff8116811461214757600080fd5b6000602082840312156122ba57600080fd5b81356106e481612299565b6000602082840312156122d757600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160a01b0316835292840192918401916001016122fa565b50909695505050505050565b60006020828403121561233d57600080fd5b81356001600160a01b03811681146106e457600080fd5b60008083601f84011261236657600080fd5b50813567ffffffffffffffff81111561237e57600080fd5b6020830191508360208260051b850101111561239957600080fd5b9250929050565b600080600080600080608087890312156123b957600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156123df57600080fd5b6123eb8a838b01612354565b9096509450606089013591508082111561240457600080fd5b5061241189828a01612354565b979a9699509497509295939492505050565b60006020828403121561243557600080fd5b813561ffff811681146106e457600080fd5b6000806040838503121561245a57600080fd5b50508035926020909101359150565b60005b8381101561248457818101518382015260200161246c565b50506000910152565b600081518084526124a5816020860160208601612469565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006124d8608083018561248d565b82810360608401526124ea818561248d565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160e01b0319168352928401929184019160010161253d565b600181811c9082168061257757607f821691505b60208210810361259757634e487b7160e01b600052602260045260246000fd5b50919050565b600082516125af818460208701612469565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610447576104476125b9565b6000600182016125f4576125f46125b9565b5060010190565b60008261261857634e487b7160e01b600052601260045260246000fd5b500490565b8381526000602084818401526060604084015260a0830184516040606086015281815180845260c0870191508483019350600092505b808310156126735783518252928401926001929092019190840190612653565b5086840151868203605f190160808801528051808352908501935090840191506000905b808210156126bb57835161ffff168352928401929184019160019190910190612697565b509098975050505050505050565b6000602082840312156126db57600080fd5b81516106e481612299565b6000602082840312156126f857600080fd5b815167ffffffffffffffff8082111561271057600080fd5b818401915084601f83011261272457600080fd5b815181811115612736576127366124f5565b604051601f8201601f19908116603f0116810190838211818310171561275e5761275e6124f5565b8160405282815287602084870101111561277757600080fd5b6124ea83602083016020880161246956fe47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a260501ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220c7fb0907563c4f62f833d928a1960a1a5277c1fdafc44ccc2434459e31d322de64736f6c63430008110033", + "nonce": "0x95", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xad2628f9093eecae72c4c70466d82751f30caed30312ac3a5a910686ca2ab336", + "transactionType": "CREATE", + "contractName": "EntityFacet", + "contractAddress": "0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x620c3f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061587480620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806378e890ba1161006657806378e890ba14610127578063a1a2e2951461012f578063a2e4569b1461014f578063edd2133b14610162578063f17d17f4146101b957600080fd5b806304e2e500146100a357806310b4955d146100b85780634980f288146100e057806360f58edf1461010157806373abdfa514610114575b600080fd5b6100b66100b1366004614d6c565b6101cc565b005b6100cb6100c6366004614df9565b610308565b60405190151581526020015b60405180910390f35b6100f36100ee366004614df9565b610319565b6040519081526020016100d7565b6100b661010f366004614eb5565b610324565b6100b6610122366004614f22565b610380565b6100f36103da565b61014261013d366004614f5a565b6103e9565b6040516100d79190614f7c565b6100b661015d366004615015565b61040e565b610175610170366004614df9565b61056c565b6040516100d79190600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b6100b66101c7366004614eb5565b6105a0565b6101d46105f5565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b81525061021d8261020d8361061a565b61021633610625565b919061063a565b6102975761022a33610625565b8260006102408261023a33610625565b90610695565b1461025f5761025a6102558561023a33610625565b6106c0565b610270565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161028e9493929190615091565b60405180910390fd5b856102a1816106f1565b608001516102f15760405162461bcd60e51b815260206004820152601f60248201527f73696d706c6520706f6c696379206372656174696f6e2064697361626c656400604482015260640161028e565b6102fe888888888861077c565b5050505050505050565b600061031382610cb3565b92915050565b600061031382610cde565b61032c6105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103618261020d8361061a565b61036e5761022a33610625565b610379858585610d2c565b5050505050565b6103886105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103bd8261020d8361061a565b6103ca5761022a33610625565b6103d48484610f35565b50505050565b60006103e4611225565b905090565b60408051808201909152606080825260208201526104078383611256565b9392505050565b6000356001600160e01b03191661045d816001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b1561049f5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604482015260640161028e565b60026104a9611482565b60030154036104fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028e565b6002610504611482565b6003015560408051808201909152601081526f537461727420546f6b656e2053616c6560801b6020820152849061053e8261020d8361061a565b61054b5761022a33610625565b6105568686866114a6565b50506001610562611482565b6003015550505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152610313826106f1565b6105a86105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506105dd8261020d8361061a565b6105ea5761022a33610625565b610379858585611689565b60006103e46040518060400160405280600681526020016553797374656d60d01b8152505b6000610313826118df565b60601b6bffffffffffffffffffffffff191690565b60006106478484846118fa565b1561065457506001610407565b61065f84848461191c565b1561066c57506001610407565b61067e846106786105f5565b8461191c565b1561068b57506001610407565b5060009392505050565b6000806106a0611482565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610724611482565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600085900361079e5760405163083191a360e41b815260040160405180910390fd5b60006107a8611482565b6000868152600f8201602052604090205490915060ff166107df5760405163e1f8801360e01b81526004810186905260240161028e565b6107ec60408501856150c2565b90506107fb60208601866150c2565b90501461084a5760405162461bcd60e51b815260206004820152601e60248201527f696e636f7272656374206e756d626572206f66207369676e6174757265730000604482015260640161028e565b6000868152601282016020526040902083906108668282615288565b505060008681526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752610995968c96949594938601939092919083018282801561092e57602002820191906000526020600020905b81548152602001906001019080831161091a575b505050505081526020016008820180548060200260200160405190810160405280929190818152602001828054801561098657602002820191906000526020600020905b815481526020019060010190808311610972575b5050505050815250508661198c565b600085815260118201602052604081206001810154909190612710906109bf906060880135615144565b6109c99190615349565b9050808260030160008282546109df919061536b565b9091555050600087815260278401602090815260408083208554845290915281208054839290610a1090849061536b565b9091555060009050610a3286356020880135604089013560608a013589611f55565b9050610a3f898983611fd0565b60008981526012850160205260408120600401805460ff19166001179055610a6788806150c2565b9050905060008060005b83811015610c4d57829150610ae985610a8d60408e018e6150c2565b84818110610a9d57610a9d61537e565b9050602002810190610aaf9190615394565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061204392505050565b9250610af860208c018c6150c2565b82818110610b0857610b0861537e565b90506020020135610b18846120fb565b14610ba55784610b2b60408d018d6150c2565b83818110610b3b57610b3b61537e565b9050602002810190610b4d9190615394565b610b5686610625565b610b5f876120fb565b8f8060200190610b6f91906150c2565b87818110610b7f57610b7f61537e565b9050602002013560405163ed7dd8af60e01b815260040161028e969594939291906153db565b826001600160a01b0316826001600160a01b031610610bea5760405163d953cdd960e01b81526001600160a01b0380841660048301528416602482015260440161028e565b610c3b610bfa60208d018d6150c2565b83818110610c0a57610c0a61537e565b602002919091013590508e610c1f8e806150c2565b85818110610c2f57610c2f61537e565b9050602002013561212c565b80610c4581615429565b915050610a71565b5060008c815260108801602052604090819020805460ff19166001179055518c907f56eae0275a21a12b30f91b02a57d763a8da5067e40cc082e5d2717e56a2aea2090610c9d908e815260200190565b60405180910390a2505050505050505050505050565b600080610cbe611482565b6000938452600e01602052505060409020546001600160a01b0316151590565b6000610313610ceb611225565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000610d36611482565b9050610d4183612415565b610d8d5760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b610d9684612450565b610dd95760405162461bcd60e51b81526020600482015260146024820152731bd89a9958dd081b9bdd081d1bdad95b9a5e995960621b604482015260640161028e565b6000848152600c8201602052604081208054610df490615442565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2090615442565b8015610e6d5780601f10610e4257610100808354040283529160200191610e6d565b820191906000526020600020905b815481529060010190602001808311610e5057829003601f168201915b5050505050905081602c0181604051610e86919061547c565b9081526040805160209281900383019020600090819055878152600c85019092529020610eb385826154d1565b506000858152600d830160205260409020610ece84826154d1565b508482602c0185604051610ee2919061547c565b908152602001604051809103902081905550847f4e5c23b5537f69e8864b5c33a22085f48db456d4a6dfd6ac8f691556bc8f909e8585604051610f26929190615591565b60405180910390a25050505050565b6000610f3f611482565b6000848152600f8201602052604090205490915060ff16610f765760405163e1f8801360e01b81526004810184905260240161028e565b610f7f82612484565b6000838152601182016020526040902060018101546003820154915490919084358114610fee5760405162461bcd60e51b815260206004820152601a60248201527f61737365744964206368616e6765206e6f7420616c6c6f776564000000000000604482015260640161028e565b6000868152601185016020526040908190209086013560029091015561101a60a08601608087016155b6565b60008781526011860160205260409020600401805460ff1916911515919091179055801580159061104f575082856020013514155b156111f257600083611065602088013585615144565b61106f9190615349565b6000888152602787016020908152604080832086845290915281205491925090829061109c9086906155d3565b6110a6919061536b565b9050806110b38985612725565b10156111165760405162461bcd60e51b815260206004820152602c60248201527f636f6c6c61746572616c20726174696f20696e76616c69642c206e6f7420656e60448201526b6f7567682062616c616e636560a01b606482015260840161028e565b866040013582111561117c5760405162461bcd60e51b815260206004820152602960248201527f6d6178206361706163697479206d757374206265203e3d207574696c697a656460448201526820636170616369747960b81b606482015260840161028e565b600088815260118701602090815260408083208a83013560018201819055600390910186905560278a018352818420878552835292819020849055805192835290820184905289917f859dcf182c6cdb0b87490f406c38a81a37e53defb3f5f9e20d5525ae9757a700910160405180910390a250505b60405186907fad70f6507f1aeb0fd1f13346cb14180cc3c76c7a31441dcd28a5e1b78c6f7a7390600090a2505050505050565b600080611230611482565b90508060010154461461124a5761124561274f565b611250565b80600201545b91505090565b60408051808201909152606080825260208201526000611274611482565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156112de57602002820191906000526020600020905b8154815260200190600101908083116112ca575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561135e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116113255790505b505050919092525050815151919250501580611381575060208101515181515114155b1561147a576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156113ee57602002820191906000526020600020905b8154815260200190600101908083116113da575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561146e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114355790505b50505050508152505090505b949350505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600082116114f65760405162461bcd60e51b815260206004820152601760248201527f6d696e7420616d6f756e74206d757374206265203e2030000000000000000000604482015260640161028e565b600081116115465760405162461bcd60e51b815260206004820152601760248201527f746f74616c207072696365206d757374206265203e2030000000000000000000604482015260640161028e565b6000611550611482565b6000858152600f8201602052604090205490915060ff166115875760405163e1f8801360e01b81526004810185905260240161028e565b61159084612450565b6115b057604051639262bf2960e01b81526004810185905260240161028e565b6000848152601182016020908152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003820154606082015260049091015460ff161515608082015261160d8580866127f7565b600061162286878785600001518860036129ad565b50506000878152600c850160209081526040808320600d880190925291829020915192935088927f1e0fe2db2ce2d56ef315966bafe53189281e5297e62c10199727acdc3b547f7e92611679928692909190615663565b60405180910390a2505050505050565b6000611693611482565b905082516000036116ba57604051633276fee960e11b81526004810185905260240161028e565b601083511061171a5760405162461bcd60e51b815260206004820152602660248201527f73796d626f6c206d757374206265206c657373207468616e203136206368617260448201526561637465727360d01b606482015260840161028e565b6000848152600f8201602052604090205460ff1661174e5760405163e1f8801360e01b81526004810185905260240161028e565b61175784612450565b156117a45760405162461bcd60e51b815260206004820152601860248201527f6f626a65637420616c726561647920746f6b656e697a65640000000000000000604482015260640161028e565b6117ad83612415565b6117f95760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b60008251116118435760405162461bcd60e51b81526020600482015260166024820152756e616d65206d757374206e6f7420626520656d70747960501b604482015260640161028e565b6000848152600c82016020526040902061185d84826154d1565b506000848152600d82016020526040902061187883826154d1565b508381602c018460405161188c919061547c565b9081526020016040518091039020819055507ff4416a16cc504990a6dc76d2ef631f24500fbcc260ee1530d9b74a4ad28781738484846040516118d19392919061568e565b60405180910390a150505050565b600081516000036118f257506000919050565b506020015190565b60008061190685612a3a565b905061191381858561191c565b95945050505050565b600080611927611482565b6000868152601f820160209081526040808320888452909152902054909150801580159061197057506000818152601d83016020908152604080832087845290915290205460ff165b1561198057600192505050610407565b50600095945050505050565b60008260600151116119d05760405162461bcd60e51b815260206004820152600d60248201526c06c696d6974206e6f74203e203609c1b604482015260640161028e565b6119dd8260400151612a5a565b611a295760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b60c082015115611a4c5760405163c96caacd60e01b815260040160405180910390fd5b60e082015115611a6f57604051632696d55d60e11b815260040160405180910390fd5b8160a0015115611a92576040516313b4184f60e31b815260040160405180910390fd5b6000611a9c611482565b6000858152601182016020908152604091829020825160a08101845281548082526001830154938201939093526002820154818501526003820154606082015260049091015460ff161515608082015291860151929350909114611b425760405162461bcd60e51b815260206004820152601e60248201527f6173736574206e6f74206d61746368696e67207769746820656e746974790000604482015260640161028e565b600061271082602001518660600151611b5b9190615144565b611b659190615349565b8260600151611b74919061536b565b90508082604001511015611bca5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820617661696c61626c65206361706163697479000000604482015260640161028e565b80611bd9878760400151612725565b1015611c1c5760405162461bcd60e51b81526020600482015260126024820152711b9bdd08195b9bdd59da0818d85c1a5d185b60721b604482015260640161028e565b8451421115611c6d5760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203c20626c6f636b2e74696d657374616d7000000000604482015260640161028e565b8451602086015111611cc15760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203e206d617475726174696f6e206461746500000000604482015260640161028e565b845160208601516201518091611cd6916155d3565b11611d315760405162461bcd60e51b815260206004820152602560248201527f706f6c69637920706572696f64206d757374206265206d6f7265207468616e20604482015264612064617960d81b606482015260840161028e565b6000611d3e876001611256565b80515190915080611d915760405162461bcd60e51b815260206004820181905260248201527f6d757374206861766520666565207363686564756c6520726563656976657273604482015260640161028e565b61010087015151611da287806150c2565b9050811115611df35760405162461bcd60e51b815260206004820152601d60248201527f746f6f206d616e7920636f6d6d697373696f6e20726563656976657273000000604482015260640161028e565b61012088015151818114611e535760405162461bcd60e51b815260206004820152602160248201527f6e756d626572206f6620636f6d6d697373696f6e7320646f6e2774206d6174636044820152600d60fb1b606482015260840161028e565b6000805b82811015611e9b578a61012001518181518110611e7657611e7661537e565b602002602001015182611e89919061536b565b9150611e9481615429565b9050611e57565b50611ea96002612710615349565b811115611ee05780611ebe6002612710615349565b6040516309281e0960e01b81526004810192909252602482015260440161028e565b611eed60208a018a6150c2565b9050611ef98a806150c2565b905014611f485760405162461bcd60e51b815260206004820152601b60248201527f7374616b65686f6c6465727320726f6c6573206d69736d617463680000000000604482015260640161028e565b5050505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c08101829052600090611fc69060e00160405160208183030381529060405280519060200120610cde565b9695505050505050565b6000611fda611482565b9050611fe584612a9a565b6000848152600a820160209081526040808320869055600b840182529182902084905581518681529081018590529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060016118d1565b600080600080845160410361208b5750505060208201516040830151606084015160001a80801561207b576001811461208457612089565b601b9150612089565b601c91505b505b60006120ef6120e7886040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b838686612b81565b50979650505050505050565b600080612106611482565b9050600061211384610625565b6000908152600a90920160205250604090205492915050565b6000612136611482565b90508360000361217c5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640161028e565b826000036121c15760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640161028e565b816000036122035760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640161028e565b6000848152601f8201602090815260408083208684529091529020546122276105f5565b84148015612260575061225d6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b81145b801561226c5750828114155b156122de57600182602a0154116122d15760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840161028e565b602a820180546000190190555b6122e66105f5565b8414801561231f575061231c6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b83145b1561239a5761232d85612c45565b6001600160a01b03166123677fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b03160361238e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a001610f26565b600080612420611482565b90506000801b81602c0184604051612438919061547c565b90815260200160405180910390205414915050919050565b60008061245b611482565b6000848152600c82016020526040902080549192509061247a90615442565b1515949350505050565b803515612624576124958135612a5a565b6124e15760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b80602001356001111580156124fc5750612710816020013511155b6125565760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840161028e565b61256660a08201608083016155b6565b1580612576575060008160400135115b6125e85760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840161028e565b8060400135816060013511156126215760408051630102498560e11b81526060830135600482015290820135602482015260440161028e565b50565b6020810135156126765760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640161028e565b61268660a08201608083016155b6565b156126d35760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640161028e565b6040810135156126215760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640161028e565b600080612730611482565b6000938452601501602090815260408085209585529490525050205490565b60008061275a611482565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8160040160405161278e91906156b9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b826000036128535760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b606482015260840161028e565b600081116128a35760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e7300604482015260640161028e565b60006128ad611482565b90506128be60008585856001612ca5565b6000838152601682016020526040812080548492906128de90849061536b565b9091555050600083815260158201602090815260408083208784529091528120805484929061290e90849061536b565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916129579161572f565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f91889190615762565b60405180910390a350505050565b60008060006129c0898989898989612e79565b60006129d08a8a8a8a8a8a613285565b905080604001519250806060015191506129f88a8a83602001518b8b86600001518c8c613555565b93506000612a04611482565b600086815260218201602052604090206008015490915060001901612a2c57612a2c8561377a565b505096509650969350505050565b600080612a45611482565b6000938452600a016020525050604090205490565b600080612a65611482565b9050806013016000612a7685612c45565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000612aa4611482565b600083815260098201602052604090205490915060ff1615612b215760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161028e565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612bb85750600090506003612c3c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c0c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c3557600060019250925050612c3c565b9150600090505b94509492505050565b60006001600160601b03821615612c9e5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161028e565b5060601c90565b6000612caf611482565b90506000612cbc856138ff565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612d1757602002820191906000526020600020905b815481526020019060010190808311612d03575b5050505050905060005b8151811015612e6e576000828281518110612d3e57612d3e61537e565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612d748987848461391f565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612dac90849061536b565b90915550508b15612df05760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612dea9084906155d3565b90915550505b8715612e5a5760008a8152601b8801602090815260408083208684529091529020548690612e1f908b90615144565b612e299190615349565b60008b8152601b89016020908152604080832087845290915281208054909190612e5490849061536b565b90915550505b50505080612e6790615429565b9050612d21565b505050505050505050565b6000612e83611482565b90508615801590612ea457506000878152600f8201602052604090205460ff165b612f015760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b606482015260840161028e565b6000868152600f8201602052604081205460ff16906001600160601b038816158015612f555750826013016000612f378a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b038816158015612fae5750846013016000612f908a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b9050612fba898861396f565b8380612fc35750825b61300f5760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c69640000000000000000604482015260640161028e565b81806130185750805b6130645760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c6964000000000000000000604482015260640161028e565b878a036130b35760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e0000604482015260640161028e565b8380156130bd5750805b806130cd57508280156130cd5750815b6131385760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b606482015260840161028e565b60008a815260158601602090815260408083208e845290915290205489111561319a5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015260640161028e565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a916131d4916155d3565b10156132375760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b606482015260840161028e565b60028614806132465750600386145b611f485760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b604482015260640161028e565b6132b06040518060800160405280600081526020016000815260200160008152602001600081525090565b60006132ba611482565b84835260208301879052905060006001600160601b03861615801561330757508160130160006132e988612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b602083015115801590613324575080806133245750825115155b1561354957600086815260228301602090815260408083208b8452909152812054908190036133535750613549565b600081815260218401602090815260409091206005810154600290910154918601518651919291829190846133888484615144565b613392919061536b565b61339c919061536b565b6133a6919061536b565b6133b0919061536b565b86516133bc9084615144565b11156133ca57505050613549565b5050600080831561347757602080870151600085815260218801909252604090912060050154106133ff578560200151613414565b60008381526021860160205260409020600501545b6000848152602187016020526040902060058101546002909101549193509061343d9084615144565b6134479190615349565b9050600061345988858f85878a613abc565b9050808760400181815161346d919061536b565b90525061350c9050565b85516000848152602187016020526040902060020154106134995785516134ae565b60008381526021860160205260409020600201545b600084815260218701602052604090206002810154600590910154919250906134d79083615144565b6134e19190615349565b915060006134f388858f85878a613abc565b90508087606001818151613507919061536b565b905250505b818660200181815161351e91906155d3565b9052508551811161353b5785516135369082906155d3565b61353e565b60005b86525061330a915050565b50509695505050505050565b600080613560611482565b90506000816020016000815461357590615429565b91905081905590506135e360405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080613626575060018a105b15613638576003610100820152613671565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c929061366b90849061536b565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d89610100015160405161376396959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b6000613784611482565b905061378f82613cfe565b156137dc5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c69737400000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061382957506138298783613d91565b15613849575060008181526021860160205260409020600a015490613815565b80801561387c576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506138a0565b60008681526022880160209081526040808320888452909152902080549089905593505b83156138c95760008481526021880160205260408082206009018a90558982529020600a018490555b6000868152602388016020908152604080832088845290915281208054916138f083615429565b91905055505050505050505050565b60008061390a611482565b60009384526016016020525050604090205490565b60008061392c8685615144565b905060008515613945576139408683615349565b613948565b60005b9050808410156139615761395c84826155d3565b613964565b60005b979650505050505050565b6001600160801b038211156139d05760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b606482015260840161028e565b6001600160801b03811115613a275760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d6974604482015260640161028e565b60008211613a705760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b604482015260640161028e565b60008111613ab85760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b604482015260640161028e565b5050565b600080613ac7611482565b9050613ad4878686613df1565b600087815260218201602052604081206007015460031480613af65750600389145b15613b0357506003613b07565b5060025b6000600382148015613b2e5750600089815260218401602052604090206001810154905414155b15613b4a57506000888152602183016020526040902054613b4d565b50865b8415613b8357600089815260218401602052604090208054600190910154613b7c9184918491908c908c613f16565b9350613baf565b600089815260218401602052604090208054600490910154613bac9184918491908c908b613f16565b93505b6000898152602184016020908152604080832080548452602787018352818420600190910154845290915281208054899290613bec9084906155d3565b9091555050600089815260218401602052604090208054600190910154613c1691908a908a6140f1565b50600089815260218401602052604090208054600490910154613c3b918a91896140f1565b505050600087815260218201602052604090206002015460011115613c7b57600087815260218201602052604090206003600890910155613c7b87614385565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b600080613d09611482565b60008481526021820160205260409020600181015460049091015491925090841580159061191357506000858152602184016020526040902060090154151580613d65575060008581526021840160205260409020600a015415155b806119135750600091825260229290920160209081526040808320938352929052205491909114919050565b600080613d9c611482565b600085815260218201602052604080822060028082015460059283015489865293909420908101549101549394509192909190613dd98482615144565b613de38385615144565b101598975050505050505050565b6000613dfb611482565b9050600080613e098661451a565b91509150613e17858561396f565b8060200151841115613e6b5760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c617267650000604482015260640161028e565b8160200151851115613ebf5760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c61726765604482015260640161028e565b848260200151613ecf91906155d3565b6000878152602185016020908152604090912060020191909155810151613ef79085906155d3565b6000968752602190930160205250506040909320600501929092555050565b600080613f21611482565b90506000613f2f888a611256565b6026830154909150600090600160401b900461ffff1615613fdd57602683015461271090613f6890600160401b900461ffff1687615144565b613f729190615349565b9050613f7e818561536b565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd88846002604051613fc7939291909283526020830191909152604082015260600190565b60405180910390a3613fdb878988846140f1565b505b81515160005b818110156140e257612710846020015182815181106140045761400461537e565b602002602001015161ffff168861401b9190615144565b6140259190615349565b925082156140d0576140568b856000015183815181106140475761404761537e565b60200260200101518a866140f1565b50614061838761536b565b9550836000015181815181106140795761407961537e565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a8660026040516140c7939291909283526020830191909152604082015260600190565b60405180910390a35b806140da81615429565b915050613fe3565b50505050509695505050505050565b6000806140fc611482565b600085815260158201602090815260408083208a845290915290205490915083111561417a5760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b606482015260840161028e565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916141b4916155d3565b10156142285760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b656400606482015260840161028e565b6142328685614590565b600084815260158201602090815260408083208984529091528120805485929061425d9084906155d3565b9091555050600084815260158201602090815260408083208884529091528120805485929061428d90849061536b565b909155506142a19050868686866000612ca5565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061581f8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061581f8339815191529181900360a00190a350600195945050505050565b600061438f611482565b905061439a82613cfe565b156143a8576143a88261463c565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015614480576040808201516000858152602185016020908152838220805483526027870182528483206001909101548352905291822080549192909161447a9084906155d3565b90915550505b6003816101000151146144e3576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103614515576000838152602183016020526040908190206001015490820151614515919081906148d2565b505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061454c611482565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b600061459a611482565b60008381526018820160209081526040808320805482518185028101850190935280835294955092939092918301828280156145f557602002820191906000526020600020905b8154815260200190600101908083116145e1575b5050505050905060005b81518110156103795761462c858584848151811061461f5761461f61537e565b6020026020010151614aef565b61463581615429565b90506145ff565b6000614646611482565b905061465182613cfe565b61469d5760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c6973740000000000000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260238601845282852081865290935292205461471c5760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f742065786973740000604482015260640161028e565b6000828152602284016020908152604080832084845290915290205484146147c1576000848152602184016020526040808220600901548083529120600a0154851461479e5760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600a90810154938352912001556147ef565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415614887576000848152602184016020526040808220600a015480835291206009015485146148685760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a0183905584835260238601825280832084845290915281208054916148c78361579b565b919050555050505050565b60006148dc611482565b600084815260158201602090815260408083208884529091529020549091508211156149565760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b606482015260840161028e565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391614990916155d3565b1015614a045760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b65640000000000606482015260840161028e565b614a0e8484614590565b600083815260168201602052604081208054849290614a2e9084906155d3565b90915550506000838152601582016020908152604080832087845290915281208054849290614a5e9084906155d3565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091614aa7916157b2565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f918891906157e5565b6000614af9611482565b90506000614b2b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b81525061061a565b60008581526015840160209081526040808320898452909152812054919250614b53866138ff565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190614b9d8585858561391f565b90508015614d60576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290614bd890849061536b565b90915550506000888152601588016020908152604080832089845290915281208054839290614c089084906155d3565b9091555050600088815260158801602090815260408083208d845290915281208054839290614c3890849061536b565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061581f8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061581f8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080600080600060a08688031215614d8457600080fd5b8535945060208601359350604086013567ffffffffffffffff80821115614daa57600080fd5b908701906060828a031215614dbe57600080fd5b90935060608701359080821115614dd457600080fd5b5086016101408189031215614de857600080fd5b949793965091946080013592915050565b600060208284031215614e0b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614e3957600080fd5b813567ffffffffffffffff80821115614e5457614e54614e12565b604051601f8301601f19908116603f01168101908282118183101715614e7c57614e7c614e12565b81604052838152866020858801011115614e9557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215614eca57600080fd5b83359250602084013567ffffffffffffffff80821115614ee957600080fd5b614ef587838801614e28565b93506040860135915080821115614f0b57600080fd5b50614f1886828701614e28565b9150509250925092565b60008082840360c0811215614f3657600080fd5b8335925060a0601f1982011215614f4c57600080fd5b506020830190509250929050565b60008060408385031215614f6d57600080fd5b50508035926020909101359150565b6020808252825160408383015280516060840181905260009291820190839060808601905b80831015614fc15783518252928401926001929092019190840190614fa1565b5086840151868203601f190160408801528051808352908501935090840191506000905b8082101561500957835161ffff168352928401929184019160019190910190614fe5565b50909695505050505050565b60008060006060848603121561502a57600080fd5b505081359360208301359350604090920135919050565b60005b8381101561505c578181015183820152602001615044565b50506000910152565b6000815180845261507d816020860160208601615041565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006150b06080830185615065565b82810360608401526139648185615065565b6000808335601e198436030181126150d957600080fd5b83018035915067ffffffffffffffff8211156150f457600080fd5b6020019150600581901b360382131561510c57600080fd5b9250929050565b801515811461262157600080fd5b6000813561031381615113565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103135761031361512e565b67ffffffffffffffff83111561517357615173614e12565b600160401b83111561518757615187614e12565b8054838255808410156151be576000828152602081208581019083015b808210156151ba578282556001820191506151a4565b5050505b5060008181526020812083915b858110156151e7578235828201556020909201916001016151cb565b505050505050565b5b81811015613ab857600081556001016151f0565b67ffffffffffffffff83111561521c5761521c614e12565b600160401b83111561523057615230614e12565b805483825580841015615256578160005260206000206152548282018683016151ef565b505b50818160005260208060002060005b8681101561527f5783358282015592820192600101615265565b50505050505050565b81358155602082013560018201556040820135600282015560608201356003820155600481016152d16152bd60808501615121565b825490151560ff1660ff1991909116178255565b6152fa6152e060a08501615121565b82805461ff00191691151560081b61ff0016919091179055565b5060c0820135600582015560e0820135600682015561531d6101008301836150c2565b61532b81836007860161515b565b505061533b6101208301836150c2565b6103d4818360088601615204565b60008261536657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156103135761031361512e565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126153ab57600080fd5b83018035915067ffffffffffffffff8211156153c657600080fd5b60200191503681900382131561510c57600080fd5b86815260a060208201528460a0820152848660c0830137600060c08683010152600060c0601f19601f8801168301019050846040830152836060830152826080830152979650505050505050565b60006001820161543b5761543b61512e565b5060010190565b600181811c9082168061545657607f821691505b60208210810361547657634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161548e818460208701615041565b9190910192915050565b601f82111561451557806000526020600020601f840160051c810160208510156154bf5750805b610379601f850160051c8301826151ef565b815167ffffffffffffffff8111156154eb576154eb614e12565b6154ff816154f98454615442565b84615498565b602080601f831160018114615534576000841561551c5750858301515b600019600386901b1c1916600185901b1785556151e7565b600085815260208120601f198616915b8281101561556357888601518255948401946001909101908401615544565b50858210156155815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006155a46040830185615065565b82810360208401526119138185615065565b6000602082840312156155c857600080fd5b813561040781615113565b818103818111156103135761031361512e565b600081546155f381615442565b808552602060018381168015615610576001811461562a57615658565b60ff1985168884015283151560051b880183019550615658565b866000528260002060005b858110156156505781548a8201860152908301908401615635565b890184019650505b505050505092915050565b83815260606020820152600061567c60608301856155e6565b8281036040840152611fc681856155e6565b8381526060602082015260006156a76060830185615065565b8281036040840152611fc68185615065565b60008083546156c781615442565b600182811680156156df57600181146156f457615723565b60ff1984168752821515830287019450615723565b8760005260208060002060005b8581101561571a5781548a820152908401908201615701565b50505082870194505b50929695505050505050565b81815260406020820152600061040760408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b6000816157aa576157aa61512e565b506000190190565b81815260406020820152600061040760408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba26469706673582212200bcf7862a6456e4582ce6e449869108edaa6bcd2d0467e6aa2d7b78f636e968264736f6c63430008110033", + "nonce": "0x96", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7281b30ceb6715e3fe8f504fa9c474767c361390969652fc08d6c6ebb479aae0", + "transactionType": "CREATE", + "contractName": "GovernanceFacet", + "contractAddress": "0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0xa0efd", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50610835806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806310a2bbed146100675780631d5102171461008f57806322f153db146100a4578063337781ea146100f1578063371d624414610104578063e13b9b1414610117575b600080fd5b6000805160206107e08339815191525460ff1660405190151581526020015b60405180910390f35b6100a261009d366004610723565b61013e565b005b6100e36100b2366004610723565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef602052604090205490565b604051908152602001610086565b6100a26100ff366004610723565b61034a565b6100a2610112366004610723565b610462565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff0546100e3565b61014661056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061018e8261017983610599565b6001600160601b03193360601b1691906105aa565b610253576001600160601b03193360601b165b8260006101f2826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1461021b57610216610211856001600160601b03193360601b166101b7565b610606565b61022c565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161024a9493929190610782565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef60205260409020546000805160206107e0833981519152904210156102eb5760405162461bcd60e51b815260206004820152602260248201527f557067726164652068617320616c7265616479206265656e207363686564756c604482015261195960f21b606482015260840161024a565b60298101546102fa90426107be565b6000858152602883016020908152604091829020929092555185815233917f3a44e179d9e19e4401346b6bded52859fff9aa9543bff59d04f48cd5c86056a191015b60405180910390a250505050565b61035261056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103858261017983610599565b61039c576001600160601b03193360601b166101a1565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef60205260409020546000805160206107e08339815191529061041b5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081d5c19dc98591948125160721b604482015260640161024a565b6000848152602882016020526040808220919091555133907f01a336412585b8675d19f339f8e31aca56990a1a2f0b4526aa86e2bcfa3660a39061033c9087815260200190565b61046a61056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061049d8261017983610599565b6104b4576001600160601b03193360601b166101a1565b6000805160206107e0833981519152603c841180156104d5575062093a8084105b61052b5760405162461bcd60e51b815260206004820152602160248201527f696e76616c696420757067726164652065787069726174696f6e20706572696f6044820152601960fa1b606482015260840161024a565b602981018490556040518481527f8f6d4287e1a643ad848fe5c460fdac7c1294b9ca04b7022b055e7f664cf9efdf9060200160405180910390a150505050565b60006105946040518060400160405280600681526020016553797374656d60d01b815250610599565b905090565b60006105a482610637565b92915050565b60006105b7848484610652565b156105c4575060016105ff565b6105cf848484610694565b156105dc575060016105ff565b6105ee846105e861056b565b84610694565b156105fb575060016105ff565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000815160000361064a57506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205461068b818585610694565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206107e083398151915290801580159061070757506000818152601d83016020908152604080832087845290915290205460ff165b15610717576001925050506105ff565b50600095945050505050565b60006020828403121561073557600080fd5b5035919050565b6000815180845260005b8181101561076257602081850181015186830182015201610746565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006107a1608083018561073c565b82810360608401526107b3818561073c565b979650505050505050565b808201808211156105a457634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212200410d8b81eeb45ebedc2d58ca1d4901ac530b3caff84efc5e448189aa57c71cb64736f6c63430008110033", + "nonce": "0x97", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeedafdb736d3eee4196d2b3b1f5f147c7f4af2b615a28b6a0864032db5aa4337", + "transactionType": "CREATE", + "contractName": "MarketFacet", + "contractAddress": "0x194A3fDc437b5398E4F334940aBBe278491D1378", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x381d65", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50613237806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063810a374d1161005b578063810a374d1461017b5780638d81a1d3146101965780639df00480146101b9578063ef706adf146101e757600080fd5b8063012ee17b1461008d5780634579268a146100ba5780634c8198dc1461015257806359e148fc14610173575b600080fd5b6100a061009b366004612fd6565b6101fc565b604080519283526020830191909152015b60405180910390f35b6100cd6100c8366004613008565b610218565b6040516100b19190600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525092915050565b610165610160366004613021565b61022f565b6040519081526020016100b1565b610165610242565b610183610251565b60405161ffff90911681526020016100b1565b6101a96101a4366004613008565b61025b565b60405190151581526020016100b1565b6101cc6101c7366004612fd6565b610266565b604080519384526020840192909252908201526060016100b1565b6101fa6101f5366004613008565b610434565b005b60008061020b86868686610618565b9097909650945050505050565b610220612f73565b61022982610845565b92915050565b600061023b83836108ea565b9392505050565b600061024c610915565b905090565b600061024c61092a565b60006102298261094a565b600080600080356001600160e01b03191661028081610970565b156102c75760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026102d16109ae565b60030154036103225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b600261032c6109ae565b60030155610339336109d2565b6040518060400160405280601381526020017222bc32b1baba32902634b6b4ba1027b33332b960691b8152506103828261037283610a03565b61037b33610a0e565b9190610a23565b6103f35761038f33610a0e565b8260006103a58261039f33610a0e565b90610a7e565b146103c4576103bf6103ba8561039f33610a0e565b610aa9565b6103d5565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016102be9493929190613089565b60006103fe336109d2565b905061040f818c8c8c8c6002610ada565b96509650965050505060016104226109ae565b60030181905550509450945094915050565b6000356001600160e01b03191661044a81610970565b1561048c5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016102be565b60026104966109ae565b60030154036104e75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b60026104f16109ae565b600301556104fe336109d2565b6040518060400160405280600c81526020016b21b0b731b2b61027b33332b960a11b8152506105308261037283610a03565b61053d5761038f33610a0e565b600161054885610845565b61010001511461058d5760405162461bcd60e51b815260206004820152601060248201526f6f66666572206e6f742061637469766560801b60448201526064016102be565b600061059885610845565b519050806105ad6105a833610a0e565b610b67565b146105fa5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206d656d626572206f6620656e746974792063616e2063616e63656c60448201526064016102be565b61060385610b87565b50505060016106106109ae565b600301555050565b60008060006106256109ae565b600086815260228201602090815260408083208a845290915281205491925085905b811561081e5760008381526021850160205260408120600201541561067f576000848152602186016020526040902060070154610682565b60035b905060006106908c83610d1c565b60008681526021880160205260408120600201549192509015806106c65750600086815260218801602052604090206002015485105b6106e35760008681526021880160205260409020600201546106e5565b845b90506106f181866130d0565b945060005b82602001515181101561078a576127108360200151828151811061071c5761071c6130e3565b602002602001015161ffff168361073391906130f9565b61073d9190613110565b610747908b613132565b99508260200151818151811061075f5761075f6130e3565b602002602001015161ffff16896107769190613132565b98508061078281613145565b9150506106f6565b506026870154600160401b900461ffff16156107f2576026870154612710906107be90600160401b900461ffff16836130f9565b6107c89190613110565b6107d2908a613132565b60268801549099506107ef90600160401b900461ffff1689613132565b97505b836107fc81613145565b6000978852602189016020526040909720600a01549694506106479350505050565b6000811161082c5784610836565b6108368186613110565b94505050505094509492505050565b61084d612f73565b60006108576109ae565b60009384526021016020908152604093849020845161016081018652815481526001820154928101929092526002810154948201949094526003840154606082015260048401546080820152600584015460a0820152600684015460c0820152600784015460e082015260088401546101008201526009840154610120820152600a909301546101408401525090919050565b6000806108f56109ae565b600094855260220160209081526040808620948652939052505090205490565b6000806109206109ae565b6020015492915050565b6000806109356109ae565b60260154600160401b900461ffff1692915050565b6000806109556109ae565b60009384526021016020525050604090206008015460011490565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806109dd6109ae565b905060006109ea84610a0e565b6000908152600a90920160205250604090205492915050565b600061022982610f48565b60601b6bffffffffffffffffffffffff191690565b6000610a30848484610f63565b15610a3d5750600161023b565b610a48848484610f85565b15610a555750600161023b565b610a6784610a61610ff5565b84610f85565b15610a745750600161023b565b5060009392505050565b600080610a896109ae565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000806000610aed89898989898961101e565b6000610afd8a8a8a8a8a8a611437565b90508060400151925080606001519150610b258a8a83602001518b8b86600001518c8c611707565b93506000610b316109ae565b600086815260218201602052604090206008015490915060001901610b5957610b59856118cd565b505096509650969350505050565b600080610b726109ae565b6000938452600a016020525050604090205490565b6000610b916109ae565b9050610b9c82611a52565b15610baa57610baa82611ae5565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015610c825760408082015160008581526021850160209081528382208054835260278701825284832060019091015483529052918220805491929091610c7c9084906130d0565b90915550505b600381610100015114610ce5576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103610d17576000838152602183016020526040908190206001015490820151610d1791908190611d7b565b505050565b60408051808201909152606080825260208201526000610d3a6109ae565b6000858152602d82016020908152604080832087845282528083208151815460609481028201850184529281018381529596509394909284928491840182828015610da457602002820191906000526020600020905b815481526020019060010190808311610d90575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610deb5790505b505050919092525050815151919250501580610e47575060208101515181515114155b15610f40576000808052602d8301602090815260408083208784528252918290208251815460609381028201840185529381018481529093919284928491840182828015610eb457602002820191906000526020600020905b815481526020019060010190808311610ea0575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f3457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610efb5790505b50505050508152505090505b949350505050565b60008151600003610f5b57506000919050565b506020015190565b600080610f6f85610b67565b9050610f7c818585610f85565b95945050505050565b600080610f906109ae565b6000868152601f8201602090815260408083208884529091529020549091508015801590610fd957506000818152601d83016020908152604080832087845290915290205460ff165b15610fe95760019250505061023b565b50600095945050505050565b600061024c6040518060400160405280600681526020016553797374656d60d01b815250610a03565b60006110286109ae565b9050861580159061104957506000878152600f8201602052604090205460ff165b6110a65760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b60648201526084016102be565b6000868152600f8201602052604081205460ff16906001600160601b0388161580156110fa57508260130160006110dc8a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b03881615801561115357508460130160006111358a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b905061115f8988612006565b83806111685750825b6111b45760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c6964000000000000000060448201526064016102be565b81806111bd5750805b6112095760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c696400000000000000000060448201526064016102be565b878a036112585760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e000060448201526064016102be565b8380156112625750805b8061127257508280156112725750815b6112dd5760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b60648201526084016102be565b60008a815260158601602090815260408083208e845290915290205489111561133f5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016102be565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a91611379916130d0565b10156113dc5760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b60648201526084016102be565b60028614806113eb5750600386145b61142a5760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b60448201526064016102be565b5050505050505050505050565b6114626040518060800160405280600081526020016000815260200160008152602001600081525090565b600061146c6109ae565b84835260208301879052905060006001600160601b0386161580156114b9575081601301600061149b88611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b6020830151158015906114d6575080806114d65750825115155b156116fb57600086815260228301602090815260408083208b84529091528120549081900361150557506116fb565b6000818152602184016020908152604090912060058101546002909101549186015186519192918291908461153a84846130f9565b6115449190613132565b61154e9190613132565b6115589190613132565b6115629190613132565b865161156e90846130f9565b111561157c575050506116fb565b5050600080831561162957602080870151600085815260218801909252604090912060050154106115b15785602001516115c6565b60008381526021860160205260409020600501545b600084815260218701602052604090206005810154600290910154919350906115ef90846130f9565b6115f99190613110565b9050600061160b88858f85878a612153565b9050808760400181815161161f9190613132565b9052506116be9050565b855160008481526021870160205260409020600201541061164b578551611660565b60008381526021860160205260409020600201545b6000848152602187016020526040902060028101546005909101549192509061168990836130f9565b6116939190613110565b915060006116a588858f85878a612153565b905080876060018181516116b99190613132565b905250505b81866020018181516116d091906130d0565b905250855181116116ed5785516116e89082906130d0565b6116f0565b60005b8652506114bc915050565b50509695505050505050565b6000806117126109ae565b90506000816020016000815461172790613145565b91829055509050611736612f73565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080611779575060018a105b1561178b5760036101008201526117c4565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c92906117be908490613132565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d8961010001516040516118b696959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b60006118d76109ae565b90506118e282611a52565b1561192f5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c6973740000000060448201526064016102be565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061197c575061197c8783612395565b1561199c575060008181526021860160205260409020600a015490611968565b8080156119cf576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506119f3565b60008681526022880160209081526040808320888452909152902080549089905593505b8315611a1c5760008481526021880160205260408082206009018a90558982529020600a018490555b600086815260238801602090815260408083208884529091528120805491611a4383613145565b91905055505050505050505050565b600080611a5d6109ae565b600084815260218201602052604090206001810154600490910154919250908415801590610f7c57506000858152602184016020526040902060090154151580611ab9575060008581526021840160205260409020600a015415155b80610f7c5750600091825260229290920160209081526040808320938352929052205491909114919050565b6000611aef6109ae565b9050611afa82611a52565b611b465760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c697374000000000000000060448201526064016102be565b600082815260218201602090815260408083206001810154600490910154818552602386018452828520818652909352922054611bc55760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f74206578697374000060448201526064016102be565b600082815260228401602090815260408083208484529091529020548414611c6a576000848152602184016020526040808220600901548083529120600a01548514611c475760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600a9081015493835291200155611c98565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415611d30576000848152602184016020526040808220600a01548083529120600901548514611d115760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a018390558483526023860182528083208484529091528120805491611d708361315e565b919050555050505050565b6000611d856109ae565b60008481526015820160209081526040808320888452909152902054909150821115611dff5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016102be565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391611e39916130d0565b1015611ead5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016102be565b611eb784846123f5565b600083815260168201602052604081208054849290611ed79084906130d0565b90915550506000838152601582016020908152604080832087845290915281208054849290611f079084906130d0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091611f5091613175565b60405180910390a36000838152601582016020908152604080832087845290915290819020549051339186916000805160206131e283398151915291611f98918891906131a8565b60405180910390a350505050565b60006001600160601b03821615611fff5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016102be565b5060601c90565b6001600160801b038211156120675760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b60648201526084016102be565b6001600160801b038111156120be5760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d697460448201526064016102be565b600082116121075760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b60448201526064016102be565b6000811161214f5760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b60448201526064016102be565b5050565b60008061215e6109ae565b905061216b8786866124a8565b60008781526021820160205260408120600701546003148061218d5750600389145b1561219a5750600361219e565b5060025b60006003821480156121c55750600089815260218401602052604090206001810154905414155b156121e1575060008881526021830160205260409020546121e4565b50865b841561221a576000898152602184016020526040902080546001909101546122139184918491908c908c6125cd565b9350612246565b6000898152602184016020526040902080546004909101546122439184918491908c908b6125cd565b93505b60008981526021840160209081526040808320805484526027870183528184206001909101548452909152812080548992906122839084906130d0565b90915550506000898152602184016020526040902080546001909101546122ad91908a908a6127a8565b506000898152602184016020526040902080546004909101546122d2918a91896127a8565b5050506000878152602182016020526040902060020154600111156123125760008781526021820160205260409020600360089091015561231287610b87565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b6000806123a06109ae565b6000858152602182016020526040808220600280820154600592830154898652939094209081015491015493945091929091906123dd84826130f9565b6123e783856130f9565b101598975050505050505050565b60006123ff6109ae565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561245a57602002820191906000526020600020905b815481526020019060010190808311612446575b5050505050905060005b81518110156124a1576124918585848481518110612484576124846130e3565b6020026020010151612a3c565b61249a81613145565b9050612464565b5050505050565b60006124b26109ae565b90506000806124c086612cb9565b915091506124ce8585612006565b80602001518411156125225760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c61726765000060448201526064016102be565b81602001518511156125765760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c6172676560448201526064016102be565b84826020015161258691906130d0565b60008781526021850160209081526040909120600201919091558101516125ae9085906130d0565b6000968752602190930160205250506040909320600501929092555050565b6000806125d86109ae565b905060006125e6888a610d1c565b6026830154909150600090600160401b900461ffff16156126945760268301546127109061261f90600160401b900461ffff16876130f9565b6126299190613110565b90506126358185613132565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8884600260405161267e939291909283526020830191909152604082015260600190565b60405180910390a3612692878988846127a8565b505b81515160005b8181101561279957612710846020015182815181106126bb576126bb6130e3565b602002602001015161ffff16886126d291906130f9565b6126dc9190613110565b925082156127875761270d8b856000015183815181106126fe576126fe6130e3565b60200260200101518a866127a8565b506127188387613132565b955083600001518181518110612730576127306130e3565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a86600260405161277e939291909283526020830191909152604082015260600190565b60405180910390a35b8061279181613145565b91505061269a565b50505050509695505050505050565b6000806127b36109ae565b600085815260158201602090815260408083208a84529091529020549091508311156128315760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016102be565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161286b916130d0565b10156128df5760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016102be565b6128e986856123f5565b60008481526015820160209081526040808320898452909152812080548592906129149084906130d0565b90915550506000848152601582016020908152604080832088845290915281208054859290612944908490613132565b909155506129589050868686866000612d2f565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339188916000805160206131e28339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339187916000805160206131e28339815191529181900360a00190a350600195945050505050565b6000612a466109ae565b90506000612a786040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610a03565b60008581526015840160209081526040808320898452909152812054919250612aa086612f03565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190612aea85858585612f23565b90508015612cad576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290612b25908490613132565b90915550506000888152601588016020908152604080832089845290915281208054839290612b559084906130d0565b9091555050600088815260158801602090815260408083208d845290915281208054839290612b85908490613132565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206131e28339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206131e28339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000612ceb6109ae565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b6000612d396109ae565b90506000612d4685612f03565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612da157602002820191906000526020600020905b815481526020019060010190808311612d8d575b5050505050905060005b8151811015612ef8576000828281518110612dc857612dc86130e3565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612dfe89878484612f23565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612e36908490613132565b90915550508b15612e7a5760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612e749084906130d0565b90915550505b8715612ee45760008a8152601b8801602090815260408083208684529091529020548690612ea9908b906130f9565b612eb39190613110565b60008b8152601b89016020908152604080832087845290915281208054909190612ede908490613132565b90915550505b50505080612ef190613145565b9050612dab565b505050505050505050565b600080612f0e6109ae565b60009384526016016020525050604090205490565b600080612f3086856130f9565b905060008515612f4957612f448683613110565b612f4c565b60005b905080841015612f6557612f6084826130d0565b612f68565b60005b979650505050505050565b60405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008060008060808587031215612fec57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561301a57600080fd5b5035919050565b6000806040838503121561303457600080fd5b50508035926020909101359150565b6000815180845260005b818110156130695760208185018101518683018201520161304d565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006130a86080830185613043565b8281036060840152612f688185613043565b634e487b7160e01b600052601160045260246000fd5b81810381811115610229576102296130ba565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610229576102296130ba565b60008261312d57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610229576102296130ba565b600060018201613157576131576130ba565b5060010190565b60008161316d5761316d6130ba565b506000190190565b81815260406020820152600061023b60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b828152816020820152606060408201526000610f4060608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220c641a6aef74c0fc0c5fbf30aa6deac4d54789e23617c82e946df8fed43e31e3e64736f6c63430008110033", + "nonce": "0x98", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2bfb4809138835d58f8dc033de004aab841dbfdbf32d0086123c2421d1c59778", + "transactionType": "CREATE", + "contractName": "NaymsTokenFacet", + "contractAddress": "0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x251df", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50610126806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806318160ddd14603757806370a0823114604f575b600080fd5b603d6094565b60405190815260200160405180910390f35b603d605a36600460c2565b6001600160a01b031660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcf602052604090205490565b600060bd7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcd5490565b905090565b60006020828403121560d357600080fd5b81356001600160a01b038116811460e957600080fd5b939250505056fea2646970667358221220933e33de5f2266d8a1d91e9925c2495e5176d45518c3d3f70b459965df517d3a64736f6c63430008110033", + "nonce": "0x99", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1abb1f61ba05344031110eb18ef39ece504e3f5a05745e8f26fdde9c0002ddce", + "transactionType": "CREATE", + "contractName": "SimplePolicyFacet", + "contractAddress": "0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2cc958", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506127e2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80637d2926051161005b5780637d292605146100fd578063c3ab48cb14610110578063e8b3fb3c14610188578063f3253b5f1461019b57600080fd5b8062bae1731461008c5780630a27162a146100a15780631add96f6146100ca57806323eaabe3146100ea575b600080fd5b61009f61009a366004612416565b6101bc565b005b6100b46100af366004612416565b610205565b6040516100c1919061242f565b60405180910390f35b6100dd6100d8366004612473565b61021b565b6040516100c19190612495565b61009f6100f8366004612416565b610250565b61009f61010b366004612473565b610320565b61012361011e366004612416565b6103c7565b6040516100c191906000610100820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015260a0830151151560a083015260c083015160c083015260e083015160e083015292915050565b61009f610196366004612523565b6104b6565b6101ae6101a9366004612555565b610541565b6040519081526020016100c1565b6000356001600160e01b0319166101d28161055a565b156101f85760405162461bcd60e51b81526004016101ef90612590565b60405180910390fd5b61020182610598565b5050565b606061021082610622565b610100015192915050565b61023f60405180606001604052806000815260200160008152602001606081525090565b61024983836107b5565b9392505050565b610258610c26565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b8152506102a18261029183610c54565b61029a33610c65565b9190610c7a565b610312576102ae33610c65565b8260006102c4826102be33610c65565b90610cd5565b146102e3576102de6102d9856102be33610c65565b610d00565b6102f4565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101ef9493929190612602565b61031b83610d31565b505050565b6000356001600160e01b0319166103368161055a565b156103535760405162461bcd60e51b81526004016101ef90612590565b82604051806040016040528060128152602001715061792053696d706c65205072656d69756d60701b81525061038c8261029183610c54565b610399576102ae33610c65565b60006103a433610c65565b905060006103b182610df3565b90506103be818888610e13565b50505050505050565b6104166040518061010001604052806000815260200160008152602001600080191681526020016000815260200160001515815260200160001515815260200160008152602001600081525090565b60405180610100016040528061042b84610622565b51815260200161043a84610622565b60200151815260200161044c84610622565b60400151815260200161045e84610622565b60600151815260200161047084610622565b608001511515815260200161048484610622565b60a001511515815260200161049884610622565b60c0015181526020016104aa84610622565b60e00151905292915050565b6000356001600160e01b0319166104cc8161055a565b156104e95760405162461bcd60e51b81526004016101ef90612590565b6104f233610fb1565b6040518060400160405280601081526020016f5061792053696d706c6520436c61696d60801b8152506105288261029183610c54565b610535576102ae33610c65565b6103be87878787610fe2565b600061055086868686866112d3565b9695505050505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b60006105a2611344565b60008381526012820160205260409020600481015491925090610100900460ff161580156105d4575080600101544210155b80156105e45750600481015460ff165b1561031b576105f283611368565b60405183907f5ef763899e3efa30fdc82a86b8d4d4a48974ced5248d778d1c4d322160ecfa0190600090a2505050565b61067f60405180610140016040528060008152602001600081526020016000801916815260200160008152602001600015158152602001600015158152602001600081526020016000815260200160608152602001606081525090565b6000610689611344565b60008481526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752969750919592949086019390929083018282801561074c57602002820191906000526020600020905b815481526020019060010190808311610738575b50505050508152602001600882018054806020026020016040519081016040528092919081815260200182805480156107a457602002820191906000526020600020905b815481526020019060010190808311610790575b505050505081525050915050919050565b6107d960405180606001604052806000815260200160008152602001606081525090565b60006107e3611344565b600085815260128201602090815260408083206007018054825181850281018501909352808352949550929390929183018282801561084157602002820191906000526020600020905b81548152602001906001019080831161082d575b5050505050905060008260120160008781526020019081526020016000206008018054806020026020016040519081016040528092919081815260200182805480156108ac57602002820191906000526020600020905b815481526020019060010190808311610898575b5050505050905060008251905060006108c488610df3565b905060006108d3826001611435565b80515190915060006108e58583612649565b6108ef9082612649565b90508067ffffffffffffffff81111561090a5761090a61265c565b60405190808252806020026020018201604052801561096357816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816109285790505b5060408a01526000805b86811015610aa25761271088828151811061098a5761098a612672565b60200260200101518d61099d9190612688565b6109a7919061269f565b91508881815181106109bb576109bb612672565b60200260200101518b6040015182815181106109d9576109d9612672565b602002602001015160200181815250508781815181106109fb576109fb612672565b60200260200101518b604001518281518110610a1957610a19612672565b60200260200101516080018181525050818b604001518281518110610a4057610a40612672565b60200260200101516060018181525050878181518110610a6257610a62612672565b60200260200101518b602001818151610a7b9190612649565b9052508a5182908c90610a8f908390612649565b905250610a9b816126c1565b905061096d565b5060005b83811015610c165761271085602001518281518110610ac757610ac7612672565b602002602001015161ffff168d610ade9190612688565b610ae8919061269f565b915084600001518181518110610b0057610b00612672565b60200260200101518b604001518289610b199190612649565b81518110610b2957610b29612672565b6020026020010151602001818152505084602001518181518110610b4f57610b4f612672565b602002602001015161ffff168b604001518289610b6c9190612649565b81518110610b7c57610b7c612672565b60209081029190910101516080015260408b01518290610b9c838a612649565b81518110610bac57610bac612672565b6020026020010151606001818152505084602001518181518110610bd257610bd2612672565b602002602001015161ffff168b602001818151610bef9190612649565b9052508a5182908c90610c03908390612649565b905250610c0f816126c1565b9050610aa6565b5050505050505050505092915050565b6000610c4f6040518060400160405280600681526020016553797374656d60d01b815250610c54565b905090565b6000610c5f82611661565b92915050565b60601b6bffffffffffffffffffffffff191690565b6000610c8784848461167c565b15610c9457506001610249565b610c9f84848461169e565b15610cac57506001610249565b610cbe84610cb8610c26565b8461169e565b15610ccb57506001610249565b5060009392505050565b600080610ce0611344565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000610d3b611344565b60008381526012820160205260409020600481015491925090610100900460ff1615610da95760405162461bcd60e51b815260206004820152601860248201527f506f6c69637920616c72656164792063616e63656c6c6564000000000000000060448201526064016101ef565b610db283611368565b60048101805461ff00191661010017905560405183907fb9f06c2aafb33d6e7e10925f097be026995386c2e7c3b05f336fe417c1b9c61e90600090a2505050565b600080610dfe611344565b6000938452600a016020525050604090205490565b60008111610e5c5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081c1c995b5a5d5b48185b5bdd5b9d60521b60448201526064016101ef565b6000610e66611344565b6000858152600f8201602052604090205490915060ff16610e9d5760405163e1f8801360e01b8152600481018590526024016101ef565b600083815260108201602052604090205460ff16610ed1576040516307c579f360e21b8152600481018490526024016101ef565b6000610edc84610df3565b60008581526012840160205260409020600481015491925090610100900460ff1615610f405760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101ef565b610f50868383600201548761170e565b50610f5b85856119a2565b83816006016000828254610f6f9190612649565b909155505060405184815285907fd44880514d72bd9d26e63603fa8448ea9bac29c0099e74e0a2c80a3ff4b39d829060200160405180910390a2505050505050565b600080610fbc611344565b90506000610fc984610c65565b6000908152600a90920160205250604090205492915050565b6000610fec611344565b9050600082116110355760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a590818db185a5b48185b5bdd5b9d60621b60448201526064016101ef565b61106f838561106a6040518060400160405280600f81526020016e496e7375726564205061727469657360881b815250610c54565b61169e565b6110b25760405162461bcd60e51b81526020600482015260146024820152736e6f7420616e20696e737572656420706172747960601b60448201526064016101ef565b600084815260128201602052604090206004810154610100900460ff16156111125760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101ef565b60058101546111218185612649565b8260030154101561116b5760405162461bcd60e51b8152602060048201526014602482015273195e18d959591cc81c1bdb1a58de481b1a5b5a5d60621b60448201526064016101ef565b8382600501600082825461117f9190612649565b909155506000905061119087610df3565b6000818152601186016020908152604091829020825160a081018452815481526001820154928101839052600282015493810193909352600381015460608401526004015460ff161515608083015291925090612710906111f19088612688565b6111fb919061269f565b6000838152602787016020908152604080832085518452909152812080549091906112279084906126da565b909155505060208101516127109061123f9088612688565b611249919061269f565b60008381526011870160205260408120600301805490919061126c9084906126da565b9091555061127b905089611c94565b61128b828886600201548961170e565b5086888a7f52cde9fcf4f60d6799679d6944671724549a11ac0b9ee9d4aa17899340472196896040516112c091815260200190565b60405180910390a4505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c081018290526000906105509060e00160405160208183030381529060405280519060200120611d7b565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000611372611344565b9050600061137f83610df3565b600084815260128401602090815260408083208484526011870190925282206001810154600583015460038401549596509294919392612710926113c391906126da565b6113cd9190612688565b6113d7919061269f565b9050808260030160008282546113ed91906126da565b909155505060008481526027860160209081526040808320855484529091528120805483929061141e9084906126da565b90915550505050600401805460ff19169055505050565b60408051808201909152606080825260208201526000611453611344565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156114bd57602002820191906000526020600020905b8154815260200190600101908083116114a9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561153d57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116115045790505b505050919092525050815151919250501580611560575060208101515181515114155b15611659576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156115cd57602002820191906000526020600020905b8154815260200190600101908083116115b9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561164d57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116116145790505b50505050508152505090505b949350505050565b6000815160000361167457506000919050565b506020015190565b60008061168885610df3565b905061169581858561169e565b95945050505050565b6000806116a9611344565b6000868152601f82016020908152604080832088845290915290205490915080158015906116f257506000818152601d83016020908152604080832087845290915290205460ff165b1561170257600192505050610249565b50600095945050505050565b600080611719611344565b600085815260158201602090815260408083208a84529091529020549091508311156117975760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101ef565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916117d1916126da565b10156118455760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101ef565b61184f8685611dc9565b600084815260158201602090815260408083208984529091528120805485929061187a9084906126da565b909155505060008481526015820160209081526040808320888452909152812080548592906118aa908490612649565b909155506118be9050868686866000611e7c565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061278d8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061278d8339815191529181900360a00190a350600195945050505050565b60006119ac611344565b6000848152601282016020908152604080832060070180548251818502810185019093528083529495509293909291830182828015611a0a57602002820191906000526020600020905b8154815260200190600101908083116119f6575b505050505090506000826012016000868152602001908152602001600020600801805480602002602001604051908101604052809291908181526020018280548015611a7557602002820191906000526020600020905b815481526020019060010190808311611a61575b505050505090506000825190506000611a8d87610df3565b6000888152601287016020526040812060020154919250805b84811015611b8057612710868281518110611ac357611ac3612672565b60200260200101518a611ad69190612688565b611ae0919061269f565b9150868181518110611af457611af4612672565b6020026020010151847f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd85856001604051611b42939291909283526020830191909152604082015260600190565b60405180910390a3611b6f84888381518110611b6057611b60612672565b6020026020010151858561170e565b50611b79816126c1565b9050611aa6565b506000611b8e846001611435565b80515190915060005b81811015611c865761271083602001518281518110611bb857611bb8612672565b602002602001015161ffff168c611bcf9190612688565b611bd9919061269f565b93508315611c76578251805182908110611bf557611bf5612672565b6020026020010151867f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd87876001604051611c43939291909283526020830191909152604082015260600190565b60405180910390a3611c748684600001518381518110611c6557611c65612672565b6020026020010151878761170e565b505b611c7f816126c1565b9050611b97565b505050505050505050505050565b6000611c9e611344565b600083815260098201602052604090205490915060ff1615611d1b5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101ef565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000610c5f611d88612050565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000611dd3611344565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015611e2e57602002820191906000526020600020905b815481526020019060010190808311611e1a575b5050505050905060005b8151811015611e7557611e658585848481518110611e5857611e58612672565b6020026020010151612081565b611e6e816126c1565b9050611e38565b5050505050565b6000611e86611344565b90506000611e93856122fe565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015611eee57602002820191906000526020600020905b815481526020019060010190808311611eda575b5050505050905060005b8151811015612045576000828281518110611f1557611f15612672565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090611f4b8987848461231e565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611f83908490612649565b90915550508b15611fc75760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290611fc19084906126da565b90915550505b87156120315760008a8152601b8801602090815260408083208684529091529020548690611ff6908b90612688565b612000919061269f565b60008b8152601b8901602090815260408083208784529091528120805490919061202b908490612649565b90915550505b5050508061203e906126c1565b9050611ef8565b505050505050505050565b60008061205b611344565b9050806001015446146120755761207061236e565b61207b565b80600201545b91505090565b600061208b611344565b905060006120bd6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610c54565b600085815260158401602090815260408083208984529091528120549192506120e5866122fe565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c8552909252822054929350919061212f8585858561231e565b905080156122f2576000898152601c8801602090815260408083208b845282528083208d84529091528120805483929061216a908490612649565b9091555050600088815260158801602090815260408083208984529091528120805483929061219a9084906126da565b9091555050600088815260158801602090815260408083208d8452909152812080548392906121ca908490612649565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061278d8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061278d8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080612309611344565b60009384526016016020525050604090205490565b60008061232b8685612688565b9050600085156123445761233f868361269f565b612347565b60005b9050808410156123605761235b84826126da565b612363565b60005b979650505050505050565b600080612379611344565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f816004016040516123ad91906126ed565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b60006020828403121561242857600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156124675783518352928401929184019160010161244b565b50909695505050505050565b6000806040838503121561248657600080fd5b50508035926020909101359150565b60006020808352608080840185518386015282860151604081818801528088015191506060808189015283835180865260a09550858a019150878501945060005b8181101561251357855180518452898101518a850152858101518685015284810151858501528801518884015294880194918601916001016124d6565b50909a9950505050505050505050565b6000806000806080858703121561253957600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a0868803121561256d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b818110156125e2576020818501810151868301820152016125c6565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061262160808301856125bc565b828103606084015261236381856125bc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c5f57610c5f612633565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610c5f57610c5f612633565b6000826126bc57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016126d3576126d3612633565b5060010190565b81810381811115610c5f57610c5f612633565b600080835481600182811c91508083168061270957607f831692505b6020808410820361272857634e487b7160e01b86526022600452602486fd5b81801561273c57600181146127515761277e565b60ff198616895284151585028901965061277e565b60008a81526020902060005b868110156127765781548b82015290850190830161275d565b505084890196505b50949897505050505050505056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba264697066735822122029aaa5bd1f621f08cf9bd85b6cb5b20baca02657e720f7f914498099eadedb7764736f6c63430008110033", + "nonce": "0x9a", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9ef1b894b371c25376cd287ea07a2b8a8926960479ab9375fac49805fbeb257c", + "transactionType": "CREATE", + "contractName": "SystemFacet", + "contractAddress": "0x217C1d6D6a72925918a644d67dcb0c3760b81E08", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x3184fc", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50612c5d806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200005e5760003560e01c8063524d8dd5146200006357806353733f97146200008f5780637dfcdf2a14620000a8578063cf0ccf9e14620000bf578063cfb5192814620000e9575b600080fd5b6200007a62000074366004620013ae565b6200010f565b60405190151581526020015b60405180910390f35b620000a6620000a0366004620013c8565b62000147565b005b620000a6620000b9366004620013ae565b62000284565b620000d6620000d0366004620013ae565b620003a2565b604051620000869594939291906200145b565b62000100620000fa366004620014c1565b620003c7565b60405190815260200162000086565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604081205460ff165b92915050565b62000151620003d4565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506200019f82620001898362000404565b6001600160601b03193360601b16919062000411565b6200026e576001600160601b03193360601b165b82600062000205826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1462000234576200022e62000228856001600160601b03193360601b16620001ca565b6200047b565b62000245565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016200026594939291906200157c565b60405180910390fd5b6200027c86868686620004ac565b505050505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5460011901620002f85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000265565b60027f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5562000326620003d4565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506200035c82620001898362000404565b62000375576001600160601b03193360601b16620001b3565b62000380836200063e565b505060016200039b60008051602062002c0883398151915290565b6003015550565b6000806060806000620003b586620007d3565b939a9299509097509550909350915050565b6000620001418262000404565b6000620003ff6040518060400160405280600681526020016553797374656d60d01b81525062000404565b905090565b60006200014182620009cd565b600062000420848484620009e9565b156200042f5750600162000474565b6200043c84848462000a2d565b156200044b5750600162000474565b62000461846200045a620003d4565b8462000a2d565b15620004705750600162000474565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008481527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460008051602062002c088339815191529060ff16156200051157604051634fd254f560e11b81526004810186905260240162000265565b6200051c8362000ac0565b62000528858362000d78565b62000534848662000dee565b6000858152600f82016020908152604091829020805460ff191660011790558151808301909252600c82526b22b73a34ba3c9020b236b4b760a11b908201526200058d9085908790620005879062000404565b62000e6e565b606083013515620005e15760405162461bcd60e51b815260206004820152601d60248201527f7574696c697a6564206361706163697479207374617274732061742030000000604482015260640162000265565b600085815260118201602052604090208390620005ff8282620015cb565b505060405184815285907f14944295d1f05c993504e6e25b1bc3eaadd9ace8fcd3fa0b015880dc0cceebcb906020015b60405180910390a25050505050565b60008051602062002c08833981519152620006598262001176565b6200069d5760405162461bcd60e51b81526020600482015260136024820152726d75737420626520746f6b656e697a61626c6560681b604482015260640162000265565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd560205260409020546001600160a01b031615620007235760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c72656164790000000000604482015260640162000265565b6000826040516200073490620013a0565b908152602001604051809103906000f08015801562000757573d6000803e3d6000fd5b506000848152600e84016020908152604080832080546001600160a01b0319166001600160a01b038616908117909155808452602b870183529281902087905551918252919250829185917fa31821b12665c4ed143d0185d4d5bceab4b16f15fad65d427a9f946457876af4910160405180910390a250505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd28352818420547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd390935290832080549193606092839260008051602062002c0883398151915291620008779062001617565b80601f0160208091040260200160405190810160405280929190818152602001828054620008a59062001617565b8015620008f65780601f10620008ca57610100808354040283529160200191620008f6565b820191906000526020600020905b815481529060010190602001808311620008d857829003601f168201915b50505060008a8152600d8501602052604090208054939750926200091d9250905062001617565b80601f01602080910402602001604051908101604052809291908181526020018280546200094b9062001617565b80156200099c5780601f1062000970576101008083540402835291602001916200099c565b820191906000526020600020905b8154815290600101906020018083116200097e57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b60008151600003620009e157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205462000a2481858562000a2d565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602062002c0883398151915290801580159062000aa257506000818152601d83016020908152604080832087845290915290205460ff165b1562000ab45760019250505062000474565b50600095945050505050565b80351562000c6f5762000ad48135620011cc565b62000b225760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640162000265565b806020013560011115801562000b3e5750612710816020013511155b62000b9a5760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840162000265565b62000bac60a082016080830162001653565b158062000bbd575060008160400135115b62000c315760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840162000265565b80604001358160600135111562000c6c5760408051630102498560e11b81526060830135600482015290820135602482015260440162000265565b50565b60208101351562000cc35760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640162000265565b62000cd560a082016080830162001653565b1562000d245760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640162000265565b60408101351562000c6c5760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640162000265565b60008051602062002c0883398151915262000d93836200122f565b6000838152600b8201602090815260408083208590558051868152918201929092529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060015b60405180910390a1505050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320849055805185815291820184905281019190915260008051602062002c08833981519152907f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab59060600162000de1565b60008051602062002c08833981519152600084900362000ec55760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640162000265565b8260000362000f0c5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640162000265565b8160000362000f505760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640162000265565b6000848152601f82016020908152604080832086845290915290205462000f76620003d4565b8414801562000fb2575062000faf6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b81145b801562000fbf5750828114155b156200103457600182602a015411620010275760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840162000265565b602a820180546000190190555b6200103e620003d4565b841480156200107a5750620010776040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b83145b15620010fa576200108b8562001339565b6001600160a01b0316620010c67fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603620010ee57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a0016200062f565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd360205260408120805460008051602062002c088339815191529190620011c29062001617565b1515949350505050565b600060008051602062002c088339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda826200120b8562001339565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604090205460008051602062002c088339815191529060ff1615620012d95760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840162000265565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b60006bffffffffffffffffffffffff821615620013995760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640162000265565b5060601c90565b611594806200167483390190565b600060208284031215620013c157600080fd5b5035919050565b600080600080848603610100811215620013e157600080fd5b853594506020860135935060a0603f1982011215620013ff57600080fd5b50929591945050604083019260e001359150565b6000815180845260005b818110156200143b576020818501810151868301820152016200141d565b506000602082860101526020601f19601f83011685010191505092915050565b85815284602082015260a0604082015260006200147c60a083018662001413565b828103606084015262001490818662001413565b91505060018060a01b03831660808301529695505050505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620014d457600080fd5b813567ffffffffffffffff80821115620014ed57600080fd5b818401915084601f8301126200150257600080fd5b813581811115620015175762001517620014ab565b604051601f8201601f19908116603f01168101908382118183101715620015425762001542620014ab565b816040528281528760208487010111156200155c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b8481528360208201526080604082015260006200159d608083018562001413565b8281036060840152620015b1818562001413565b979650505050505050565b801515811462000c6c57600080fd5b813581556020820135600182015560408201356002820155606082013560038201556004810160808301356200160181620015bc565b815490151560ff1660ff19919091161790555050565b600181811c908216806200162c57607f821691505b6020821081036200164d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200166657600080fd5b81356200047481620015bc56fe6101006040523480156200001257600080fd5b5060405162001594380380620015948339810160408190526200003591620002a0565b3360a081905260405163531657c160e11b81526004810183905263a62caf8290602401602060405180830381865afa15801562000076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009c9190620002ba565b620000ee5760405162461bcd60e51b815260206004820152601360248201527f6d75737420626520746f6b656e697a61626c650000000000000000000000000060448201526064015b60405180910390fd5b60a0516040516310b4955d60e01b8152600481018390526001600160a01b03909116906310b4955d90602401602060405180830381865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e9190620002ba565b15620001ad5760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c726561647900000000006044820152606401620000e5565b60808190524660c052620001c0620001ca565b60e05250620002e5565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620002056080516200026f60201b62000dd71760201c565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b600060208284031215620002b357600080fd5b5051919050565b600060208284031215620002cd57600080fd5b81518015158114620002de57600080fd5b9392505050565b60805160a05160c05160e0516112286200036c60003960006106bd0152600061068d0152600081816102a601528181610384015281816105ea015281816107910152818161089b0152610afd0152600081816102720152818161035b015281816105bd015281816107f00152818161086701528181610ad00152610e3001526112286000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806355b6ed5c11610097578063a457c2d711610066578063a457c2d7146101f1578063a9059cbb14610204578063d505accf14610217578063dd62ed3e1461022c57600080fd5b806355b6ed5c1461018e57806370a08231146101b65780637ecebe00146101c957806395d89b41146101e957600080fd5b806323b872dd116100d357806323b872dd14610151578063313ce567146101645780633644e51514610173578063395093511461017b57600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610263565b60405161010f9190610ee2565b60405180910390f35b61012b610126366004610f2d565b61031f565b604051901515815260200161010f565b61014361034c565b60405190815260200161010f565b61012b61015f366004610f59565b6103fc565b6040516012815260200161010f565b610143610689565b61012b610189366004610f2d565b6106df565b61014361019c366004610f9a565b600060208181529281526040808220909352908152205481565b6101436101c4366004610fd3565b61078d565b6101436101d7366004610fd3565b60016020526000908152604090205481565b610102610858565b61012b6101ff366004610f2d565b610915565b61012b610212366004610f2d565b6109c7565b61022a610225366004610ff7565b610b9a565b005b61014361023a366004610f9a565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205490565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610315919081019061110c565b5095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152902081905560015b92915050565b604051637104788560e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e208f10a90602401602060405180830381865afa1580156103d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f79190611198565b905090565b6000805160206111d383398151915254600090600119016104645760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000805160206111d383398151915255600082900361048457600080fd5b6001600160a01b038416600090815260208181526040808320338452909152902054828110156104ed5760405162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161045b565b60001981146105235761050083826111b1565b6001600160a01b0386166000908152602081815260408083203384529091529020555b60006105398660601b6001600160601b03191690565b905060006105518660601b6001600160601b03191690565b9050856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161059891815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b15801561063657600080fd5b505af115801561064a573d6000803e3d6000fd5b5050505060019350505050600161067e7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600301559392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146106ba576103f7610e08565b507f000000000000000000000000000000000000000000000000000000000000000090565b336000908152602081815260408083206001600160a01b0386168452909152812054829061070f906000196111b1565b101561075d5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015260640161045b565b50336000908152602081815260408083206001600160a01b03861684529091529020805482019055600192915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c9233016107d28460601b6001600160601b03191690565b6040516001600160e01b031960e084901b16815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006024820152604401602060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611198565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261090a919081019061110c565b509095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152812054828110156109955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161045b565b5050336000908152602081815260408083206001600160a01b0386168452909152902080548290039055600192915050565b6000805160206111d38339815191525460009060011901610a2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045b565b60026000805160206111d38339815191525560003360601b6001600160601b03191690506000610a648560601b6001600160601b03191690565b9050846001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610aab91815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506001925050506001610b907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6003015592915050565b42841015610bea5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161045b565b60006001610bf6610689565b6001600160a01b038a81166000818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98183015280840194909452938d166060840152608083018c905260a083015260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610cfd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610d335750876001600160a01b0316816001600160a01b0316145b610d705760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161045b565b6001600160a01b039081166000908152602081815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e547f0000000000000000000000000000000000000000000000000000000000000000610dd7565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60005b83811015610ed9578181015183820152602001610ec1565b50506000910152565b6020815260008251806020840152610f01816040850160208701610ebe565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610f2a57600080fd5b50565b60008060408385031215610f4057600080fd5b8235610f4b81610f15565b946020939093013593505050565b600080600060608486031215610f6e57600080fd5b8335610f7981610f15565b92506020840135610f8981610f15565b929592945050506040919091013590565b60008060408385031215610fad57600080fd5b8235610fb881610f15565b91506020830135610fc881610f15565b809150509250929050565b600060208284031215610fe557600080fd5b8135610ff081610f15565b9392505050565b600080600080600080600060e0888a03121561101257600080fd5b873561101d81610f15565b9650602088013561102d81610f15565b95506040880135945060608801359350608088013560ff8116811461105157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261109557600080fd5b815167ffffffffffffffff808211156110b0576110b061106e565b604051601f8301601f19908116603f011681019082821181831017156110d8576110d861106e565b816040528381528660208588010111156110f157600080fd5b611102846020830160208901610ebe565b9695505050505050565b600080600080600060a0868803121561112457600080fd5b8551945060208601519350604086015167ffffffffffffffff8082111561114a57600080fd5b61115689838a01611084565b9450606088015191508082111561116c57600080fd5b5061117988828901611084565b925050608086015161118a81610f15565b809150509295509295909350565b6000602082840312156111aa57600080fd5b5051919050565b8181038181111561034657634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcaa26469706673582212200c86a8f2175b34cd5b040596caac08bb7bde088ff58d324024bdb9bec75cb61a64736f6c634300081100331ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212201cec633ad6bf584d2e84854a9b1d5363546099de670988e5338f9b26ad8d844264736f6c63430008110033", + "nonce": "0x9b", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x487aeb6492fe4f6c415fb18cdbacba7835a188c3558d0c6a341e096c54909006", + "transactionType": "CREATE", + "contractName": "TokenizedVaultFacet", + "contractAddress": "0x6254eFd84cE152306448E2d10c4dF7DCE6C99765", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2238af", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50611e40806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aa47d5cb11610071578063aa47d5cb14610121578063ad747f2f14610134578063c978758914610147578063d588b1321461015a578063e208f10a1461016d578063ec7a37701461018057600080fd5b80631ed7db65146100ae57806333f6dfd8146100c35780635c923301146100d65780637baa1dde146100fb578063a6cd857d1461010e575b600080fd5b6100c16100bc366004611b64565b610193565b005b6100c16100d1366004611b96565b6102cf565b6100e96100e4366004611bc2565b610313565b60405190815260200160405180910390f35b6100e9610109366004611bc2565b610328565b6100c161011c366004611b96565b610334565b6100c161012f366004611bc2565b6103ff565b6100c1610142366004611bc2565b61059d565b6100c1610155366004611b96565b6105df565b6100e9610168366004611b96565b61066d565b6100e961017b366004611be4565b610684565b6100c161018e366004611b64565b61068f565b6000356001600160e01b0319166101a9816106e3565b156101cf5760405162461bcd60e51b81526004016101c690611bfd565b60405180910390fd5b60026101d9610721565b600301540361022a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b6002610234610721565b6003015582600061024482610745565b945050505050806001600160a01b0316336001600160a01b0316146102ab5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c7920777261707065722063616c6c7320616c6c6f77656400000000000060448201526064016101c6565b6102b7878787876108d9565b50505060016102c4610721565b600301555050505050565b6000356001600160e01b0319166102e5816106e3565b156103025760405162461bcd60e51b81526004016101c690611bfd565b61030d848484610b6d565b50505050565b600061031f8383610dea565b90505b92915050565b600061031f8383610e14565b6000356001600160e01b03191661034a816106e3565b156103675760405162461bcd60e51b81526004016101c690611bfd565b6002610371610721565b60030154036103c25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b60026103cc610721565b6003015560006103db33610e3f565b90506103e9818686866108d9565b505060016103f5610721565b6003015550505050565b6000356001600160e01b031916610415816106e3565b156104325760405162461bcd60e51b81526004016101c690611bfd565b61043b33610e3f565b6040518060400160405280601881526020017f506179204469766964656e642046726f6d20456e74697479000000000000000081525061048e8261047e83610e70565b61048733610e7b565b9190610e90565b6104ff5761049b33610e7b565b8260006104b1826104ab33610e7b565b90610eeb565b146104d0576104cb6104c6856104ab33610e7b565b610f16565b6104e1565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101c69493929190611c6f565b600061050a33610e3f565b9050600061051782610f47565b519050856105258383610dea565b10156105875760405162461bcd60e51b815260206004820152602b60248201527f7061794469766964656e6446726f6d456e746974793a20696e7375666669636960448201526a656e742062616c616e636560a81b60648201526084016101c6565b610594878384848a610fd2565b50505050505050565b6000356001600160e01b0319166105b3816106e3565b156105d05760405162461bcd60e51b81526004016101c690611bfd565b6105da83836112f6565b505050565b6000356001600160e01b0319166105f5816106e3565b156106125760405162461bcd60e51b81526004016101c690611bfd565b61061a6113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061064d8261047e83610e70565b61065a5761049b33610e7b565b6106658686866113d7565b505050505050565b600061067a848484611602565b90505b9392505050565b60006103228261168c565b6106976113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506106ca8261047e83610e70565b6106d75761049b33610e7b565b610594868686866108d9565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600080606080600080610756610721565b6000888152600a82016020908152604080832054600b8501835281842054600c86019093529220805492995090975091925061079190611ca0565b80601f01602080910402602001604051908101604052809291908181526020018280546107bd90611ca0565b801561080a5780601f106107df5761010080835404028352916020019161080a565b820191906000526020600020905b8154815290600101906020018083116107ed57829003601f168201915b50505060008a8152600d85016020526040902080549397509261082f92509050611ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461085b90611ca0565b80156108a85780601f1061087d576101008083540402835291602001916108a8565b820191906000526020600020905b81548152906001019060200180831161088b57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b6000806108e4610721565b600085815260158201602090815260408083208a84529091529020549091508311156109625760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101c6565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161099c91611cf0565b1015610a105760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101c6565b610a1a86856112f6565b6000848152601582016020908152604080832089845290915281208054859290610a45908490611cf0565b90915550506000848152601582016020908152604080832088845290915281208054859290610a75908490611d03565b90915550610a8990508686868660006116ac565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918891600080516020611deb8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918791600080516020611deb8339815191529181900360a00190a350600195945050505050565b6000610b77610721565b90506000610ba96040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b60008581526015840160209081526040808320898452909152812054919250610bd18661168c565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190610c1b85858585611880565b90508015610dde576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290610c56908490611d03565b90915550506000888152601588016020908152604080832089845290915281208054839290610c86908490611cf0565b9091555050600088815260158801602090815260408083208d845290915281208054839290610cb6908490611d03565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918891600080516020611deb8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c91600080516020611deb8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080610df5610721565b6000938452601501602090815260408085209585529490525050205490565b600080610e1f610721565b600094855260270160209081526040808620948652939052505090205490565b600080610e4a610721565b90506000610e5784610e7b565b6000908152600a90920160205250604090205492915050565b6000610322826118d0565b60601b6bffffffffffffffffffffffff191690565b6000610e9d8484846118eb565b15610eaa5750600161067d565b610eb584848461190d565b15610ec25750600161067d565b610ed484610ece6113a9565b8461190d565b15610ee15750600161067d565b5060009392505050565b600080610ef6610721565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610f7a610721565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600081116110225760405162461bcd60e51b815260206004820152601b60248201527f6469766964656e6420616d6f756e74206d757374206265203e2030000000000060448201526064016101c6565b61102b8261197d565b6110775760405162461bcd60e51b815260206004820181905260248201527f6d75737420626520737570706f72746564206469766964656e6420746f6b656e60448201526064016101c6565b611080856119bd565b156110e05760405162461bcd60e51b815260206004820152602a60248201527f6e6f6e756e69717565206469766964656e6420646973747269627574696f6e2060448201526934b232b73a34b334b2b960b11b60648201526084016101c6565b60006110ea610721565b9050600061111c6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b90506111278561168c565b6000036111405761113a868686866108d9565b5061129a565b61114c868286866108d9565b506000858152601b83016020908152604080832087845290915281208054859290611178908490611d03565b90915550506000858152601983016020908152604080832087845290915290205460ff161580156111c457506000858152601a8301602090815260408083208380529091529020548414155b1561129a576111d16119e0565b600086815260188401602052604090205460ff91909116116112355760405162461bcd60e51b815260206004820152601d60248201527f65786365656473206d6178206469762064656e6f6d696e6174696f6e7300000060448201526064016101c6565b6000858152601883016020818152604080842080546019880184528286208a87528452828620805460ff191660ff9283161790558a8652601a880184528286208254909116865283529084208890559181528154600181018355918352909120018490555b6112a3876119f8565b60408051878152602081018790529081018590526060810184905287907f79c99b7b895cb77cf516bfda80c5416e57f9e3811cd24fa42b139bf7b9ab29679060800160405180910390a250505050505050565b6000611300610721565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561135b57602002820191906000526020600020905b815481526020019060010190808311611347575b5050505050905060005b81518110156113a257611392858584848151811061138557611385611d16565b6020026020010151610b6d565b61139b81611d2c565b9050611365565b5050505050565b60006113d26040518060400160405280600681526020016553797374656d60d01b815250610e70565b905090565b60006113e1610721565b6000848152601582016020908152604080832088845290915290205490915082111561145b5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016101c6565b6000848152602782016020908152604080832086845282528083205460158501835281842088855290925290912054839161149591611cf0565b10156115095760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016101c6565b61151384846112f6565b600083815260168201602052604081208054849290611533908490611cf0565b90915550506000838152601582016020908152604080832087845290915281208054849290611563908490611cf0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916115ac91611d45565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611deb833981519152916115f491889190611d78565b60405180910390a350505050565b60008061160d610721565b600085815260158201602090815260408083208984529091528120549192506116358661168c565b6000878152601b8501602090815260408083208984528252808320548a8452601c880183528184208a855283528184208c8552909252909120549192509061167f84848484611880565b9998505050505050505050565b600080611697610721565b60009384526016016020525050604090205490565b60006116b6610721565b905060006116c38561168c565b600086815260188401602090815260408083208054825181850281018501909352808352949550929390929183018282801561171e57602002820191906000526020600020905b81548152602001906001019080831161170a575b5050505050905060005b815181101561187557600082828151811061174557611745611d16565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061177b89878484611880565b60008b8152601c89016020908152604080832087845282528083208f84529091528120805492935083929091906117b3908490611d03565b90915550508b156117f75760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906117f1908490611cf0565b90915550505b87156118615760008a8152601b8801602090815260408083208684529091529020548690611826908b90611db1565b6118309190611dc8565b60008b8152601b8901602090815260408083208784529091528120805490919061185b908490611d03565b90915550505b5050508061186e90611d2c565b9050611728565b505050505050505050565b60008061188d8685611db1565b9050600085156118a6576118a18683611dc8565b6118a9565b60005b9050808410156118c2576118bd8482611cf0565b6118c5565b60005b979650505050505050565b600081516000036118e357506000919050565b506020015190565b6000806118f785611adf565b905061190481858561190d565b95945050505050565b600080611918610721565b6000868152601f820160209081526040808320888452909152902054909150801580159061196157506000818152601d83016020908152604080832087845290915290205460ff165b156119715760019250505061067d565b50600095945050505050565b600080611988610721565b905080601301600061199985611aff565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000806119c8610721565b60009384526009016020525050604090205460ff1690565b6000806119eb610721565b6017015460ff1692915050565b6000611a02610721565b600083815260098201602052604090205490915060ff1615611a7f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101c6565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b600080611aea610721565b6000938452600a016020525050604090205490565b60006bffffffffffffffffffffffff821615611b5d5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016101c6565b5060601c90565b60008060008060808587031215611b7a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611bab57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611bd557600080fd5b50508035926020909101359150565b600060208284031215611bf657600080fd5b5035919050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b81811015611c4f57602081850181015186830182015201611c33565b506000602082860101526020601f19601f83011685010191505092915050565b848152836020820152608060408201526000611c8e6080830185611c29565b82810360608401526118c58185611c29565b600181811c90821680611cb457607f821691505b602082108103611cd457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032257610322611cda565b8082018082111561032257610322611cda565b634e487b7160e01b600052603260045260246000fd5b600060018201611d3e57611d3e611cda565b5060010190565b81815260406020820152600061031f60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061067a60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b808202811582820484141761032257610322611cda565b600082611de557634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220c76ca0c882bfa45b386f8292617eff197ebaff97f26b05c6dbe13a7b5bbc394c64736f6c63430008110033", + "nonce": "0x9c", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xddff632ab38e431289502ce39590e6d81b930bb582131505717b5e36f76a2922", + "transactionType": "CREATE", + "contractName": "TokenizedVaultIOFacet", + "contractAddress": "0x8fe69c524112F080A15d409f7c68B56248541266", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x1bcfdd", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50611868806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313b747601461003b5780639bda867814610050575b600080fd5b61004e610049366004611548565b610063565b005b61004e61005e36600461158c565b610291565b6000356001600160e01b03191661007981610476565b156100c05760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026100ca6104b4565b600301540361011b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b60026101256104b4565b60030155610132336104d8565b6040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e746974790000008152506101858261017583610509565b61017e3361051a565b919061052f565b6101f6576101923361051a565b8260006101a8826101a23361051a565b9061058b565b146101c7576101c26101bd856101a23361051a565b6105b6565b6101d8565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016100b79493929190611606565b6102466102028761051a565b886102416040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e74697479000000815250610509565b61052f565b61026e57604051635e81202760e01b81526001600160a01b03871660048201526024016100b7565b61027a878787876105e7565b505060016102866104b4565b600301555050505050565b6000356001600160e01b0319166102a781610476565b156102e95760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016100b7565b60026102f36104b4565b60030154036103445760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b600261034e6104b4565b6003015561035b336104d8565b6040518060400160405280601081526020016f115e1d195c9b985b0811195c1bdcda5d60821b8152506103918261017583610509565b61039e576101923361051a565b6103a785610632565b6103f35760405162461bcd60e51b815260206004820152601f60248201527f6578744465706f7369743a20696e76616c696420455243323020746f6b656e0060448201526064016100b7565b60006103fe336104d8565b905061040981610662565b6104555760405162461bcd60e51b815260206004820152601c60248201527f6578744465706f7369743a20696e76616c69642072656365697665720000000060448201526064016100b7565b610460818787610685565b505050600161046d6104b4565b60030155505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806104e36104b4565b905060006104f08461051a565b6000908152600a90920160205250604090205492915050565b6000610514826106fd565b92915050565b60601b6bffffffffffffffffffffffff191690565b600061053c848484610718565b1561054957506001610584565b61055484848461073a565b1561056157506001610584565b6105738461056d6107aa565b8461073a565b1561058057506001610584565b5060005b9392505050565b6000806105966104b4565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b806000036106085760405163959ed6e560e01b815260040160405180910390fd5b60006106138361051a565b90506106208582846107d8565b61062b838584610a03565b5050505050565b60008061063d6104b4565b6001600160a01b03909316600090815260139093016020525050604090205460ff1690565b60008061066d6104b4565b6000938452600f016020525050604090205460ff1690565b806000036106a65760405163806daf1160e01b815260040160405180910390fd5b60006106b18361051a565b905060006106bf8430610ab9565b90506106cd84333086610bda565b60006106d98530610ab9565b905060006106e7838361164d565b90506106f4878583610ca0565b50505050505050565b6000815160000361071057506000919050565b506020015190565b60008061072485610e48565b905061073181858561073a565b95945050505050565b6000806107456104b4565b6000868152601f820160209081526040808320888452909152902054909150801580159061078e57506000818152601d83016020908152604080832087845290915290205460ff165b1561079e57600192505050610584565b50600095945050505050565b60006107d36040518060400160405280600681526020016553797374656d60d01b815250610509565b905090565b60006107e26104b4565b6000848152601582016020908152604080832088845290915290205490915082111561085c5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016100b7565b600084815260278201602090815260408083208684528252808320546015850183528184208885529092529091205483916108969161164d565b101561090a5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016100b7565b6109148484610e68565b60008381526016820160205260408120805484929061093490849061164d565b9091555050600083815260158201602090815260408083208784529091528120805484929061096490849061164d565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916109ad91611660565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f591889190611693565b60405180910390a350505050565b610a0c83610f14565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610a6891906116d4565b6000604051808303816000865af19150503d8060008114610aa5576040519150601f19603f3d011682016040523d82523d6000602084013e610aaa565b606091505b509150915061062b8282610f79565b6000610ac483610f14565b604080516001600160a01b0384811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092839290871691610b1c91906116d4565b6000604051808303816000865af19150503d8060008114610b59576040519150601f19603f3d011682016040523d82523d6000602084013e610b5e565b606091505b50915091508115610b865780806020019051810190610b7d91906116f0565b92505050610514565b60405162461bcd60e51b8152602060048201526024808201527f4c696245524332303a2063616c6c20746f2062616c616e63654f6628292066616044820152631a5b195960e21b60648201526084016100b7565b610be384610f14565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610c4791906116d4565b6000604051808303816000865af19150503d8060008114610c84576040519150601f19603f3d011682016040523d82523d6000602084013e610c89565b606091505b5091509150610c988282610f79565b505050505050565b82600003610cfc5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b60648201526084016100b7565b60008111610d4c5760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e730060448201526064016100b7565b6000610d566104b4565b9050610d676000858585600161106b565b600083815260168201602052604081208054849290610d87908490611709565b90915550506000838152601582016020908152604080832087845290915281208054849290610db7908490611709565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091610e009161171c565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f59188919061174f565b600080610e536104b4565b6000938452600a016020525050604090205490565b6000610e726104b4565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015610ecd57602002820191906000526020600020905b815481526020019060010190808311610eb9575b5050505050905060005b815181101561062b57610f048585848481518110610ef757610ef7611788565b602002602001015161123f565b610f0d8161179e565b9050610ed7565b803b80610f755760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b60648201526084016100b7565b5050565b811561100057805115610f755780806020019051810190610f9a91906117b7565b610f755760405162461bcd60e51b815260206004820152603160248201527f4c696245524332303a207472616e73666572206f72207472616e7366657246726044820152706f6d2072657475726e65642066616c736560781b60648201526084016100b7565b80511561100f57805181602001fd5b60405162461bcd60e51b815260206004820152602b60248201527f4c696245524332303a207472616e73666572206f72207472616e73666572467260448201526a1bdb481c995d995c9d195960aa1b60648201526084016100b7565b60006110756104b4565b90506000611082856114bc565b60008681526018840160209081526040808320805482518185028101850190935280835294955092939092918301828280156110dd57602002820191906000526020600020905b8154815260200190600101908083116110c9575b5050505050905060005b815181101561123457600082828151811061110457611104611788565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061113a898784846114dc565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611172908490611709565b90915550508b156111b65760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906111b090849061164d565b90915550505b87156112205760008a8152601b88016020908152604080832086845290915290205486906111e5908b906117d9565b6111ef91906117f0565b60008b8152601b8901602090815260408083208784529091528120805490919061121a908490611709565b90915550505b5050508061122d9061179e565b90506110e7565b505050505050505050565b60006112496104b4565b9050600061127b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610509565b600085815260158401602090815260408083208984529091528120549192506112a3866114bc565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c855290925282205492935091906112ed858585856114dc565b905080156114b0576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290611328908490611709565b9091555050600088815260158801602090815260408083208984529091528120805483929061135890849061164d565b9091555050600088815260158801602090815260408083208d845290915281208054839290611388908490611709565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206118138339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206118138339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b6000806114c76104b4565b60009384526016016020525050604090205490565b6000806114e986856117d9565b905060008515611502576114fd86836117f0565b611505565b60005b90508084101561151e57611519848261164d565b611521565b60005b979650505050505050565b80356001600160a01b038116811461154357600080fd5b919050565b6000806000806080858703121561155e57600080fd5b8435935061156e6020860161152c565b925061157c6040860161152c565b9396929550929360600135925050565b6000806040838503121561159f57600080fd5b6115a88361152c565b946020939093013593505050565b60005b838110156115d15781810151838201526020016115b9565b50506000910152565b600081518084526115f28160208601602086016115b6565b601f01601f19169290920160200192915050565b84815283602082015260806040820152600061162560808301856115da565b828103606084015261152181856115da565b634e487b7160e01b600052601160045260246000fd5b8181038181111561051457610514611637565b81815260406020820152600061058460408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b949350505050565b600082516116e68184602087016115b6565b9190910192915050565b60006020828403121561170257600080fd5b5051919050565b8082018082111561051457610514611637565b81815260406020820152600061058460408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6000600182016117b0576117b0611637565b5060010190565b6000602082840312156117c957600080fd5b8151801515811461058457600080fd5b808202811582820484141761051457610514611637565b60008261180d57634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220e323c0b7b09bc0df683e4a3f7d17b66ea0ed3195031fa630c20c6f8deedaeafc64736f6c63430008110033", + "nonce": "0x9d", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x97cee138978692be5f50fe8874350c8aba974b0e2695c57141895d9ee0a8f811", + "transactionType": "CREATE", + "contractName": "UserFacet", + "contractAddress": "0x65C37f11879ab9aBAB518457e665C45AaF074DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x818d9", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061066c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633f1b887f1461005157806353b66f36146100815780639cb481b2146100a2578063afab5f15146100b5575b600080fd5b61006461005f366004610550565b6100ca565b6040516001600160a01b0390911681526020015b60405180910390f35b61009461008f366004610550565b6100db565b604051908152602001610078565b6100946100b0366004610569565b61010e565b6100c86100c3366004610592565b610124565b005b60006100d58261028e565b92915050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546100d5565b60006100d58260601b6001600160601b03191690565b61012c6102f3565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506101768261016183610321565b6001600160601b03193360601b16919061032c565b61022d573360601b6001600160601b0319168260006101cc82845b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b146101f5576101f06101eb856001600160601b03193360601b16610191565b610388565b610206565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161022494939291906105fa565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460ff1661027e5760405163e1f8801360e01b815260048101849052602401610224565b61028884846103b9565b50505050565b60006bffffffffffffffffffffffff8216156102ec5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610224565b5060601c90565b600061031c6040518060400160405280600681526020016553797374656d60d01b815250610321565b905090565b60006100d582610452565b600061033984848461046d565b1561034657506001610381565b6103518484846104af565b1561035e57506001610381565b6103708461036a6102f3565b846104af565b1561037d57506001610381565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020908152604080832084905580518581529182018490528181019290925290517f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7917f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab5919081900360600190a1505050565b6000815160000361046557506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546104a68185856104af565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790801580159061053457506000818152601d83016020908152604080832087845290915290205460ff165b1561054457600192505050610381565b50600095945050505050565b60006020828403121561056257600080fd5b5035919050565b60006020828403121561057b57600080fd5b81356001600160a01b038116811461038157600080fd5b600080604083850312156105a557600080fd5b50508035926020909101359150565b6000815180845260005b818110156105da576020818501810151868301820152016105be565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061061960808301856105b4565b828103606084015261062b81856105b4565b97965050505050505056fea2646970667358221220823108a3a341d14f045fe1e4bcdfbc76d2aac3ba7bf549787e62867e6606e0de64736f6c63430008110033", + "nonce": "0x9e", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x03f421f721386b2c3e6156bb6e4bd3f9d9c7c2a854d955395c34a75971018e2a", + "transactionIndex": "0x3", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x1b95de", + "gasUsed": "0x116c59", + "contractAddress": "0x0538812C252058083Aa2b13d425f11610C404C25", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x8523e34459e7f2063545b739430e5aae7c90d33b3544e1656dfe3ef4545e241e", + "transactionIndex": "0x4", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x3e26a3", + "gasUsed": "0x2290c5", + "contractAddress": "0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0xad2628f9093eecae72c4c70466d82751f30caed30312ac3a5a910686ca2ab336", + "transactionIndex": "0x5", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x89980f", + "gasUsed": "0x4b716c", + "contractAddress": "0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x7281b30ceb6715e3fe8f504fa9c474767c361390969652fc08d6c6ebb479aae0", + "transactionIndex": "0x6", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x915558", + "gasUsed": "0x7bd49", + "contractAddress": "0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0xeedafdb736d3eee4196d2b3b1f5f147c7f4af2b615a28b6a0864032db5aa4337", + "transactionIndex": "0x7", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0xbc82cc", + "gasUsed": "0x2b2d74", + "contractAddress": "0x194A3fDc437b5398E4F334940aBBe278491D1378", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x2bfb4809138835d58f8dc033de004aab841dbfdbf32d0086123c2421d1c59778", + "transactionIndex": "0x8", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0xbe4bb5", + "gasUsed": "0x1c8e9", + "contractAddress": "0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x1abb1f61ba05344031110eb18ef39ece504e3f5a05745e8f26fdde9c0002ddce", + "transactionIndex": "0x9", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0xe0c1b6", + "gasUsed": "0x227601", + "contractAddress": "0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x9ef1b894b371c25376cd287ea07a2b8a8926960479ab9375fac49805fbeb257c", + "transactionIndex": "0xa", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x106dc05", + "gasUsed": "0x261a4f", + "contractAddress": "0x217C1d6D6a72925918a644d67dcb0c3760b81E08", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x487aeb6492fe4f6c415fb18cdbacba7835a188c3558d0c6a341e096c54909006", + "transactionIndex": "0xb", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x12130e8", + "gasUsed": "0x1a54e3", + "contractAddress": "0x6254eFd84cE152306448E2d10c4dF7DCE6C99765", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0xddff632ab38e431289502ce39590e6d81b930bb582131505717b5e36f76a2922", + "transactionIndex": "0xc", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x1369744", + "gasUsed": "0x15665c", + "contractAddress": "0x8fe69c524112F080A15d409f7c68B56248541266", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x97cee138978692be5f50fe8874350c8aba974b0e2695c57141895d9ee0a8f811", + "transactionIndex": "0xd", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x13cd22e", + "gasUsed": "0x63aea", + "contractAddress": "0x65C37f11879ab9aBAB518457e665C45AaF074DB7", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + } + ], + "libraries": [], + "pending": [], + "returns": { + "diamondAddress": { + "internal_type": "address", + "value": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B" + }, + "cut": { + "internal_type": "struct IDiamondCut.FacetCut[]", + "value": "[(0x0538812C252058083Aa2b13d425f11610C404C25, 1, [0x5e1ac8fa, 0x1219dee2, 0xaf76f046, 0x47c07483, 0xd774b4e3, 0xc8422402, 0x7273e796, 0xc1b2bc96, 0x6362aeb4, 0xff3406ce]), (0x0538812C252058083Aa2b13d425f11610C404C25, 0, [0x373df694]), (0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71, 1, [0xce498e84, 0xcb429501, 0xe9f0273c, 0xbdd2620a, 0xeb75c8e8, 0xe6a19df2, 0xa62caf82, 0xa0069289, 0xa246e7a8, 0x34531828, 0xf1ebc810, 0xebc526dc, 0x5c74d6a4, 0x7bf96b68, 0x7f09d085]), (0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788, 1, [0x04e2e500, 0x78e890ba, 0xf17d17f4, 0xedd2133b, 0xa1a2e295, 0x4980f288, 0x10b4955d, 0xa2e4569b, 0x73abdfa5, 0x60f58edf]), (0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A, 1, [0x337781ea, 0x1d510217, 0x22f153db, 0x371d6244]), (0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A, 0, [0xe13b9b14, 0x10a2bbed]), (0x194A3fDc437b5398E4F334940aBBe278491D1378, 1, [0x012ee17b, 0xef706adf, 0x9df00480, 0x4c8198dc, 0x59e148fc, 0x810a374d, 0x4579268a, 0x8d81a1d3]), (0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca, 1, [0x70a08231, 0x18160ddd]), (0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030, 1, [0x1add96f6, 0x23eaabe3, 0x00bae173, 0xf3253b5f, 0xc3ab48cb, 0xe8b3fb3c, 0x7d292605]), (0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030, 0, [0x0a27162a]), (0x217C1d6D6a72925918a644d67dcb0c3760b81E08, 1, [0x53733f97, 0xcf0ccf9e, 0x524d8dd5, 0xcfb51928, 0x7dfcdf2a]), (0x6254eFd84cE152306448E2d10c4dF7DCE6C99765, 1, [0x7baa1dde, 0xd588b132, 0x5c923301, 0xc9787589, 0xe208f10a, 0xec7a3770, 0xa6cd857d, 0xaa47d5cb, 0xad747f2f, 0x33f6dfd8, 0x1ed7db65]), (0x8fe69c524112F080A15d409f7c68B56248541266, 1, [0x9bda8678, 0x13b74760]), (0x65C37f11879ab9aBAB518457e665C45AaF074DB7, 1, [0x3f1b887f, 0x53b66f36, 0x9cb481b2, 0xafab5f15])]" + }, + "initDiamondAddress": { + "internal_type": "address", + "value": "0x0000000000000000000000000000000000000000" + }, + "upgradeHash": { + "internal_type": "bytes32", + "value": "0x5d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf6170" + } + }, + "timestamp": 1697190786, + "chain": 11155111, + "multi": false, + "commit": "13da7ed8" +} \ No newline at end of file diff --git a/broadcast/SmartDeploy.s.sol/11155111/run-1697191022.json b/broadcast/SmartDeploy.s.sol/11155111/run-1697191022.json new file mode 100644 index 00000000..6c42abbc --- /dev/null +++ b/broadcast/SmartDeploy.s.sol/11155111/run-1697191022.json @@ -0,0 +1,415 @@ +{ + "transactions": [ + { + "hash": "0x03f421f721386b2c3e6156bb6e4bd3f9d9c7c2a854d955395c34a75971018e2a", + "transactionType": "CREATE", + "contractName": "ACLFacet", + "contractAddress": "0x0538812C252058083Aa2b13d425f11610C404C25", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x16a4d6", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506113b0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637273e796116100715780637273e79614610132578063af76f04614610145578063c1b2bc9614610158578063c84224021461016b578063d774b4e31461017e578063ff3406ce1461019157600080fd5b80631219dee2146100ae578063373df694146100d657806347c07483146100e95780635e1ac8fa1461010a5780636362aeb41461011f575b600080fd5b6100c16100bc366004610fe3565b6101a4565b60405190151581526020015b60405180910390f35b6100c16100e436600461103d565b6101c5565b6100fc6100f7366004611069565b6101dc565b6040519081526020016100cd565b61011d61011836600461108b565b6101e8565b005b61011d61012d3660046110db565b6102c6565b6100c16101403660046110db565b610392565b6100c16101533660046110db565b61039e565b61011d610166366004611069565b6103aa565b6100c161017936600461108b565b610420565b6100c161018c36600461108b565b610435565b61011d61019f36600461113f565b61044a565b60006101ba8585856101b586610527565b610538565b90505b949350505050565b60006101d2848484610606565b90505b9392505050565b60006101d58383610661565b60006101f33361069d565b90506102048185856101b586610527565b61024e5760405162461bcd60e51b815260206004820152601660248201527506e6f7420696e2061737369676e6572732067726f75760541b60448201526064015b60405180910390fd5b600061025a8585610661565b90508015801590610274575061027282868684610538565b155b156102a257818585610285846106b2565b60405163065708d560e31b8152600401610245949392919061120c565b6102ac85856106e3565b6102bf85856102ba86610527565b610844565b5050505050565b6102ce610afc565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103118261030183610527565b61030a3361069d565b9190610606565b6103825761031e3361069d565b8260006103348261032e3361069d565b90610661565b146103535761034e6103498561032e3361069d565b6106b2565b610364565b604051806020016040528060008152505b83604051630696a9cb60e51b8152600401610245949392919061123b565b61038c8484610b2a565b50505050565b60006101d58383610bf3565b60006101d58383610c64565b60006103b68383610661565b905060006103c33361069d565b90506103d181858585610538565b6104165760405162461bcd60e51b815260206004820152601660248201527506e6f7420696e2061737369676e6572732067726f75760541b6044820152606401610245565b61038c84846106e3565b60006101d2848461043085610527565b610ca6565b60006101d2848461044585610527565b610ce8565b610452610afc565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104858261030183610527565b6104925761031e3361069d565b6104c1846040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610d77565b1561051c5760405162461bcd60e51b815260206004820152602560248201527f73797374656d2061646d696e732067726f7570206973206e6f74206d6f6469666044820152646961626c6560d81b6064820152608401610245565b6102bf858585610dd0565b600061053282610ec0565b92915050565b60008360000361057e5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b6044820152606401610245565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe5602052604090205460008051602061135b833981519152906105c7878683610ce8565b156105d7576001925050506101bd565b6105e9876105e3610afc565b83610ce8565b156105f9576001925050506101bd565b5060009695505050505050565b6000610613848484610ca6565b15610620575060016101d5565b61062b848484610ce8565b15610638575060016101d5565b61064a84610644610afc565b84610ce8565b15610657575060016101d5565b5060009392505050565b60009182527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080842092845291905290205490565b60601b6bffffffffffffffffffffffff191690565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832084845290915290205460008051602061135b83398151915290610734610afc565b8314801561076d575061076a6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b81145b156107a357600182602a0154116107965760405162461bcd60e51b815260040161024590611277565b602a820180546000190190555b6000848152601f8301602090815260408083208684529091529081902054905185917f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9161081e918782526020820152606060408201819052600d908201526c5f756e61737369676e526f6c6560981b608082015260a00190565b60405180910390a2506000928352601f0160209081526040808420928452919052812055565b60008051602061135b83398151915260008490036108985760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b6044820152606401610245565b826000036108dd5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b6044820152606401610245565b8160000361091f5760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b6044820152606401610245565b6000848152601f820160209081526040808320868452909152902054610943610afc565b8414801561097c57506109796040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b81145b80156109885750828114155b156109be57600182602a0154116109b15760405162461bcd60e51b815260040161024590611277565b602a820180546000190190555b6109c6610afc565b841480156109ff57506109fc6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b83145b15610a7a57610a0d85610edb565b6001600160a01b0316610a477fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603610a6e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060818301819052600b908201526a5f61737369676e526f6c6560a81b6080820152905186917f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e919081900360a00190a25050505050565b6000610b256040518060400160405280600681526020016553797374656d60d01b815250610527565b905090565b610b33826112ba565b600003610b53576040516305ccaaf160e41b815260040160405180910390fd5b610b5c816112ba565b600003610b7c57604051630db0d26760e21b815260040160405180910390fd5b60008051602061135b833981519152610b9482610527565b81601e016000610ba386610527565b8152602001908152602001600020819055507f736c56e4bb16c438047d822d53251d5034edf27808ac582857e8863b898c95298383604051610be69291906112e1565b60405180910390a1505050565b600060008051602061135b8339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe482610c2f86610527565b81526020019081526020016000206000610c4885610527565b815260208101919091526040016000205460ff16949350505050565b600060008051602061135b833981519152610c7e83610527565b81601e016000610c8d87610527565b8152602001908152602001600020541491505092915050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054610cdf818585610ce8565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602061135b833981519152908015801590610d5b57506000818152601d83016020908152604080832087845290915290205460ff165b15610d6b576001925050506101d5565b50600095945050505050565b600081604051602001610d8a9190611306565b6040516020818303038152906040528051906020012083604051602001610db19190611306565b6040516020818303038152906040528051906020012014905092915050565b60008051602061135b833981519152610de8846112ba565b600003610e08576040516305ccaaf160e41b815260040160405180910390fd5b610e11836112ba565b600003610e3157604051630db0d26760e21b815260040160405180910390fd5b8181601d016000610e4187610527565b81526020019081526020016000206000610e5a86610527565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6f94e7b578c4524a9c142c004ba6682c061019130e377a6f81d31792a25b7bcc848484604051610eb293929190611322565b60405180910390a150505050565b60008151600003610ed357506000919050565b506020015190565b60006bffffffffffffffffffffffff821615610f395760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610245565b5060601c90565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610f6757600080fd5b813567ffffffffffffffff80821115610f8257610f82610f40565b604051601f8301601f19908116603f01168101908282118183101715610faa57610faa610f40565b81604052838152866020858801011115610fc357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215610ff957600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff81111561102557600080fd5b61103187828801610f56565b91505092959194509250565b60008060006060848603121561105257600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561107c57600080fd5b50508035926020909101359150565b6000806000606084860312156110a057600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156110c557600080fd5b6110d186828701610f56565b9150509250925092565b600080604083850312156110ee57600080fd5b823567ffffffffffffffff8082111561110657600080fd5b61111286838701610f56565b9350602085013591508082111561112857600080fd5b5061113585828601610f56565b9150509250929050565b60008060006060848603121561115457600080fd5b833567ffffffffffffffff8082111561116c57600080fd5b61117887838801610f56565b9450602086013591508082111561118e57600080fd5b5061119b86828701610f56565b925050604084013580151581146111b157600080fd5b809150509250925092565b60005b838110156111d75781810151838201526020016111bf565b50506000910152565b600081518084526111f88160208601602086016111bc565b601f01601f19169290920160200192915050565b84815283602082015282604082015260806060820152600061123160808301846111e0565b9695505050505050565b84815283602082015260806040820152600061125a60808301856111e0565b828103606084015261126c81856111e0565b979650505050505050565b60208082526023908201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460408201526236b4b760e91b606082015260800190565b805160208083015191908110156112db576000198160200360031b1b821691505b50919050565b6040815260006112f460408301856111e0565b8281036020840152610cdf81856111e0565b600082516113188184602087016111bc565b9190910192915050565b60608152600061133560608301866111e0565b828103602084015261134781866111e0565b915050821515604083015294935050505056fe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220e21f372d4c766f7f6831a9f8bbdf34d04a474929b32141982e2542379383f28a64736f6c63430008110033", + "nonce": "0x94", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8523e34459e7f2063545b739430e5aae7c90d33b3544e1656dfe3ef4545e241e", + "transactionType": "CREATE", + "contractName": "AdminFacet", + "contractAddress": "0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2cec23", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506127fe806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063bdd2620a11610097578063e9f0273c11610066578063e9f0273c146101ce578063eb75c8e814610202578063ebc526dc14610218578063f1ebc8101461022b57600080fd5b8063bdd2620a14610180578063cb42950114610195578063ce498e84146101a8578063e6a19df2146101bb57600080fd5b80637f09d085116100d35780637f09d0851461012a578063a00692891461013d578063a246e7a814610165578063a62caf821461016d57600080fd5b806334531828146100fa5780635c74d6a41461010f5780637bf96b6814610122575b600080fd5b61010d61010836600461226f565b61023e565b005b61010d61011d3660046122a8565b610346565b61010d610397565b61010d61013836600461226f565b6103eb565b61015061014b3660046122c5565b61043c565b60405190151581526020015b60405180910390f35b61010d61044d565b61015061017b3660046122c5565b61049d565b6101886104a8565b60405161015c91906122de565b61010d6101a336600461232b565b6104b7565b61010d6101b63660046123a0565b610508565b6101506101c936600461226f565b610568565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde5460405160ff909116815260200161015c565b61020a610597565b60405190815260200161015c565b61010d610226366004612423565b6105a1565b61010d610239366004612447565b6105f2565b61024661064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610289826102798361066f565b6102823361067a565b919061068f565b610338576102963361067a565b8260006102e1826102a63361067a565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b14610300576102fb6102f6856102a63361067a565b6106eb565b610311565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161032f94939291906124b9565b60405180910390fd5b6103418361071c565b505050565b61034e61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610381826102798361066f565b61038e576102963361067a565b610341836107db565b61039f61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103d2826102798361066f565b6103df576102963361067a565b6103e76108c8565b5050565b6103f361064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610426826102798361066f565b610433576102963361067a565b61034183610e6d565b600061044782610f1a565b92915050565b61045561064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610488826102798361066f565b610495576102963361067a565b6103e7610f7a565b600061044782611531565b60606104b2611584565b905090565b6104bf61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104f2826102798361066f565b6104ff576102963361067a565b610341836115f7565b61051061064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610543826102798361066f565b610550576102963361067a565b61055e888888888888611869565b5050505050505050565b6001600160e01b031981166000908152600080516020612789833981519152602052604081205460ff16610447565b60006104b261064a565b6105a961064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506105dc826102798361066f565b6105e9576102963361067a565b61034183611aa4565b6105fa61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061062d826102798361066f565b61063a576102963361067a565b6106448484611b5a565b50505050565b60006104b26040518060400160405280600681526020016553797374656d60d01b8152505b600061044782611c0e565b60601b6bffffffffffffffffffffffff191690565b600061069c848484611c29565b156106a9575060016106e4565b6106b4848484611c6b565b156106c1575060016106e4565b6106d3846106cd61064a565b84611c6b565b156106e0575060016106e4565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff1916600190811790915581518181528083019092529293929091828101908036833701905050905082816000815181106107855761078561250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b054906107ce908390612521565b60405180910390a1505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde546000805160206127a98339815191529060ff908116908316811061087a5760405162461bcd60e51b815260206004820152602e60248201527f5f7570646174654d61784469766964656e6444656e6f6d696e6174696f6e733a60448201526d2063616e6e6f742072656475636560901b606482015260840161032f565b60178201805460ff191660ff85811691821790925560408051928416835260208301919091527fe09b1c2d8d49f7249034d44d8dd27508c3f0a430a2df509300042437a4c46cf591016107ce565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce3805460ff199081169091557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c87188054821690557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e2744939278054821690557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c28054821690557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c8054821690557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe4990878054821690557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec695687228054821690557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a34018054821690557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c8054821690557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec638054821690557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb069998054821690557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e8054821690557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b8280548216905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b1805490921690915560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b81600081518110610b4f57610b4f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b9082906001908110610b8657610b8661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b9082906002908110610bbd57610bbd61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b9082906003908110610bf357610bf361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b9082906004908110610c2a57610c2a61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b9082906005908110610c6157610c6161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b9082906006908110610c9857610c9861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b9082906007908110610ccf57610ccf61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b9082906008908110610d0657610d0661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b9082906009908110610d3d57610d3d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a908110610d7457610d7461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b908110610dab57610dab61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c908110610de157610de161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d908110610e1857610e1861250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d117551490610e61908390612521565b60405180910390a15050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff19169055805160018082528183019092529293929182810190803683370190505090508281600081518110610ed157610ed161250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d1175514906107ce908390612521565b60006000805160206127a98339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda82610f5685611cfa565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce38054600160ff1991821681179092557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c871880548216831790557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e27449392780548216831790557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c280548216831790557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c80548216831790557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe49908780548216831790557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec6956872280548216831790557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a340180548216831790557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c80548216831790557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec6380548216831790557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb0699980548216831790557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e80548216831790557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b82805482168317905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b18054909216909217905560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b8160008151811061121f5761121f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b90829060019081106112565761125661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b908290600290811061128d5761128d61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b90829060039081106112c3576112c361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b90829060049081106112fa576112fa61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b90829060059081106113315761133161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b90829060069081106113685761136861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b908290600790811061139f5761139f61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b90829060089081106113d6576113d661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b908290600990811061140d5761140d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a9081106114445761144461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b90811061147b5761147b61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c9081106114b1576114b161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d9081106114e8576114e861250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b05490610e61908390612521565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd36020526040812080546000805160206127a9833981519152919061157a90612563565b1515949350505050565b606060006000805160206127a9833981519152601481018054604080516020808402820181019092528281529394508301828280156115ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115ce575b505050505091505090565b601261160282611d5f565b60ff16111561162457604051630f4051bd60e11b815260040160405180910390fd5b6001600160a01b03811660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda60205260409020546000805160206127a98339815191529060ff16156116bc5760405162461bcd60e51b815260206004820152601c60248201527f65787465726e616c20746f6b656e20616c726561647920616464656400000000604482015260640161032f565b6001600160a01b0382166000908152602b820160205260409020541561173f5760405162461bcd60e51b815260206004820152603260248201527f63616e6e6f74206164642070617274696369706174696f6e20746f6b656e20776044820152711c985c1c195c88185cc8195e1d195c9b985b60721b606482015260840161032f565b600061174a83611e6a565b905061175581611f6b565b6117a15760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161032f565b6001600160a01b03831660009081526013830160205260408120805460ff191660011790556117cf8461067a565b90506117da81611fc8565b601483018054600181018255600091825260209091200180546001600160a01b0319166001600160a01b0386161790556040518190602c85019061181f90859061259d565b908152604051908190036020018120919091556001600160a01b038516907fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d790600090a250505050565b6000805160206127a98339815191528184146118d35760405162461bcd60e51b815260206004820152602360248201527f72656365697665727320616e6420626173697320706f696e7473206d69736d616044820152620e8c6d60eb1b606482015260840161032f565b6000878152602d8201602090815260408083208984529091528120906118f98282612129565b61190760018301600061214a565b5050604080516060602087028083018201845292820187815260009383928a918a91829190860190849080828437600092019190915250505090825250604080516020878102828101820190935287825292830192909188918891829185019084908082843760009201829052509390945250508251519293509050805b828110156119cc57836020015181815181106119a3576119a361250b565b602002602001015161ffff16826119ba91906125cf565b91506119c5816125e2565b9050611985565b506119da60026127106125fb565b811115611a1157806119ef60026127106125fb565b6040516309281e0960e01b81526004810192909252602482015260440161032f565b60008a8152602d8501602090815260408083208c84528252909120845180518693611a4092849291019061216f565b506020828101518051611a5992600185019201906121ba565b509050507f8e22c2013153bfc59463ca08bb8cb31dd13119bf9ce2eee71d7a13069b50fc408a8a85604051611a909392919061261d565b60405180910390a150505050505050505050565b6000805160206127a9833981519152611ac060026127106125fb565b8261ffff161115611afe5781611ad960026127106125fb565b6040516309281e0960e01b815261ffff9092166004830152602482015260440161032f565b60268101805469ffff000000000000000019166801000000000000000061ffff8516908102919091179091556040519081527f92a4a904f938dda530a8218ca590b5c9fba2153905fd0396f1bff1dd499a543f90602001610e61565b81611ba75760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f742072656d6f76652064656661756c742066656573000000000000604482015260640161032f565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff46020908152604080832084845290915281206000805160206127a983398151915291611bf98282612129565b611c0760018301600061214a565b5050505050565b60008151600003611c2157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054611c62818585611c6b565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206127a9833981519152908015801590611cde57506000818152601d83016020908152604080832087845290915290205460ff165b15611cee576001925050506106e4565b50600095945050505050565b60006bffffffffffffffffffffffff821615611d585760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161032f565b5060601c90565b6000611d6a826120c8565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b03861691611dad9161259d565b6000604051808303816000865af19150503d8060008114611dea576040519150601f19603f3d011682016040523d82523d6000602084013e611def565b606091505b50915091508115611e165780806020019051810190611e0e91906126c9565b949350505050565b60405162461bcd60e51b815260206004820152602360248201527f4c696245524332303a2063616c6c20746f20646563696d616c732829206661696044820152621b195960ea1b606482015260840161032f565b6060611e75826120c8565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160009182916001600160a01b03861691611eb89161259d565b6000604051808303816000865af19150503d8060008114611ef5576040519150601f19603f3d011682016040523d82523d6000602084013e611efa565b606091505b50915091508115611f195780806020019051810190611e0e91906126e6565b60405162461bcd60e51b815260206004820152602160248201527f4c696245524332303a2063616c6c20746f2073796d626f6c2829206661696c656044820152601960fa1b606482015260840161032f565b6040516000906000805160206127a98339815191529082907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff390611fb090869061259d565b90815260200160405180910390205414915050919050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd060205260409020546000805160206127a98339815191529060ff161561206f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161032f565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b90606001610e61565b803b806103e75760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b606482015260840161032f565b5080546000825590600052602060002090810190612147919061225a565b50565b50805460008255600f016010900490600052602060002090810190612147919061225a565b8280548282559060005260206000209081019282156121aa579160200282015b828111156121aa57825182559160200191906001019061218f565b506121b692915061225a565b5090565b82805482825590600052602060002090600f016010900481019282156121aa5791602002820160005b8382111561222357835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026121e3565b80156122515782816101000a81549061ffff0219169055600201602081600101049283019260010302612223565b50506121b69291505b5b808211156121b6576000815560010161225b565b60006020828403121561228157600080fd5b81356001600160e01b0319811681146106e457600080fd5b60ff8116811461214757600080fd5b6000602082840312156122ba57600080fd5b81356106e481612299565b6000602082840312156122d757600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160a01b0316835292840192918401916001016122fa565b50909695505050505050565b60006020828403121561233d57600080fd5b81356001600160a01b03811681146106e457600080fd5b60008083601f84011261236657600080fd5b50813567ffffffffffffffff81111561237e57600080fd5b6020830191508360208260051b850101111561239957600080fd5b9250929050565b600080600080600080608087890312156123b957600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156123df57600080fd5b6123eb8a838b01612354565b9096509450606089013591508082111561240457600080fd5b5061241189828a01612354565b979a9699509497509295939492505050565b60006020828403121561243557600080fd5b813561ffff811681146106e457600080fd5b6000806040838503121561245a57600080fd5b50508035926020909101359150565b60005b8381101561248457818101518382015260200161246c565b50506000910152565b600081518084526124a5816020860160208601612469565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006124d8608083018561248d565b82810360608401526124ea818561248d565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160e01b0319168352928401929184019160010161253d565b600181811c9082168061257757607f821691505b60208210810361259757634e487b7160e01b600052602260045260246000fd5b50919050565b600082516125af818460208701612469565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610447576104476125b9565b6000600182016125f4576125f46125b9565b5060010190565b60008261261857634e487b7160e01b600052601260045260246000fd5b500490565b8381526000602084818401526060604084015260a0830184516040606086015281815180845260c0870191508483019350600092505b808310156126735783518252928401926001929092019190840190612653565b5086840151868203605f190160808801528051808352908501935090840191506000905b808210156126bb57835161ffff168352928401929184019160019190910190612697565b509098975050505050505050565b6000602082840312156126db57600080fd5b81516106e481612299565b6000602082840312156126f857600080fd5b815167ffffffffffffffff8082111561271057600080fd5b818401915084601f83011261272457600080fd5b815181811115612736576127366124f5565b604051601f8201601f19908116603f0116810190838211818310171561275e5761275e6124f5565b8160405282815287602084870101111561277757600080fd5b6124ea83602083016020880161246956fe47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a260501ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220c7fb0907563c4f62f833d928a1960a1a5277c1fdafc44ccc2434459e31d322de64736f6c63430008110033", + "nonce": "0x95", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xad2628f9093eecae72c4c70466d82751f30caed30312ac3a5a910686ca2ab336", + "transactionType": "CREATE", + "contractName": "EntityFacet", + "contractAddress": "0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x620c3f", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061587480620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806378e890ba1161006657806378e890ba14610127578063a1a2e2951461012f578063a2e4569b1461014f578063edd2133b14610162578063f17d17f4146101b957600080fd5b806304e2e500146100a357806310b4955d146100b85780634980f288146100e057806360f58edf1461010157806373abdfa514610114575b600080fd5b6100b66100b1366004614d6c565b6101cc565b005b6100cb6100c6366004614df9565b610308565b60405190151581526020015b60405180910390f35b6100f36100ee366004614df9565b610319565b6040519081526020016100d7565b6100b661010f366004614eb5565b610324565b6100b6610122366004614f22565b610380565b6100f36103da565b61014261013d366004614f5a565b6103e9565b6040516100d79190614f7c565b6100b661015d366004615015565b61040e565b610175610170366004614df9565b61056c565b6040516100d79190600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b6100b66101c7366004614eb5565b6105a0565b6101d46105f5565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b81525061021d8261020d8361061a565b61021633610625565b919061063a565b6102975761022a33610625565b8260006102408261023a33610625565b90610695565b1461025f5761025a6102558561023a33610625565b6106c0565b610270565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161028e9493929190615091565b60405180910390fd5b856102a1816106f1565b608001516102f15760405162461bcd60e51b815260206004820152601f60248201527f73696d706c6520706f6c696379206372656174696f6e2064697361626c656400604482015260640161028e565b6102fe888888888861077c565b5050505050505050565b600061031382610cb3565b92915050565b600061031382610cde565b61032c6105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103618261020d8361061a565b61036e5761022a33610625565b610379858585610d2c565b5050505050565b6103886105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103bd8261020d8361061a565b6103ca5761022a33610625565b6103d48484610f35565b50505050565b60006103e4611225565b905090565b60408051808201909152606080825260208201526104078383611256565b9392505050565b6000356001600160e01b03191661045d816001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b1561049f5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604482015260640161028e565b60026104a9611482565b60030154036104fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028e565b6002610504611482565b6003015560408051808201909152601081526f537461727420546f6b656e2053616c6560801b6020820152849061053e8261020d8361061a565b61054b5761022a33610625565b6105568686866114a6565b50506001610562611482565b6003015550505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152610313826106f1565b6105a86105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506105dd8261020d8361061a565b6105ea5761022a33610625565b610379858585611689565b60006103e46040518060400160405280600681526020016553797374656d60d01b8152505b6000610313826118df565b60601b6bffffffffffffffffffffffff191690565b60006106478484846118fa565b1561065457506001610407565b61065f84848461191c565b1561066c57506001610407565b61067e846106786105f5565b8461191c565b1561068b57506001610407565b5060009392505050565b6000806106a0611482565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610724611482565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600085900361079e5760405163083191a360e41b815260040160405180910390fd5b60006107a8611482565b6000868152600f8201602052604090205490915060ff166107df5760405163e1f8801360e01b81526004810186905260240161028e565b6107ec60408501856150c2565b90506107fb60208601866150c2565b90501461084a5760405162461bcd60e51b815260206004820152601e60248201527f696e636f7272656374206e756d626572206f66207369676e6174757265730000604482015260640161028e565b6000868152601282016020526040902083906108668282615288565b505060008681526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752610995968c96949594938601939092919083018282801561092e57602002820191906000526020600020905b81548152602001906001019080831161091a575b505050505081526020016008820180548060200260200160405190810160405280929190818152602001828054801561098657602002820191906000526020600020905b815481526020019060010190808311610972575b5050505050815250508661198c565b600085815260118201602052604081206001810154909190612710906109bf906060880135615144565b6109c99190615349565b9050808260030160008282546109df919061536b565b9091555050600087815260278401602090815260408083208554845290915281208054839290610a1090849061536b565b9091555060009050610a3286356020880135604089013560608a013589611f55565b9050610a3f898983611fd0565b60008981526012850160205260408120600401805460ff19166001179055610a6788806150c2565b9050905060008060005b83811015610c4d57829150610ae985610a8d60408e018e6150c2565b84818110610a9d57610a9d61537e565b9050602002810190610aaf9190615394565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061204392505050565b9250610af860208c018c6150c2565b82818110610b0857610b0861537e565b90506020020135610b18846120fb565b14610ba55784610b2b60408d018d6150c2565b83818110610b3b57610b3b61537e565b9050602002810190610b4d9190615394565b610b5686610625565b610b5f876120fb565b8f8060200190610b6f91906150c2565b87818110610b7f57610b7f61537e565b9050602002013560405163ed7dd8af60e01b815260040161028e969594939291906153db565b826001600160a01b0316826001600160a01b031610610bea5760405163d953cdd960e01b81526001600160a01b0380841660048301528416602482015260440161028e565b610c3b610bfa60208d018d6150c2565b83818110610c0a57610c0a61537e565b602002919091013590508e610c1f8e806150c2565b85818110610c2f57610c2f61537e565b9050602002013561212c565b80610c4581615429565b915050610a71565b5060008c815260108801602052604090819020805460ff19166001179055518c907f56eae0275a21a12b30f91b02a57d763a8da5067e40cc082e5d2717e56a2aea2090610c9d908e815260200190565b60405180910390a2505050505050505050505050565b600080610cbe611482565b6000938452600e01602052505060409020546001600160a01b0316151590565b6000610313610ceb611225565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000610d36611482565b9050610d4183612415565b610d8d5760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b610d9684612450565b610dd95760405162461bcd60e51b81526020600482015260146024820152731bd89a9958dd081b9bdd081d1bdad95b9a5e995960621b604482015260640161028e565b6000848152600c8201602052604081208054610df490615442565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2090615442565b8015610e6d5780601f10610e4257610100808354040283529160200191610e6d565b820191906000526020600020905b815481529060010190602001808311610e5057829003601f168201915b5050505050905081602c0181604051610e86919061547c565b9081526040805160209281900383019020600090819055878152600c85019092529020610eb385826154d1565b506000858152600d830160205260409020610ece84826154d1565b508482602c0185604051610ee2919061547c565b908152602001604051809103902081905550847f4e5c23b5537f69e8864b5c33a22085f48db456d4a6dfd6ac8f691556bc8f909e8585604051610f26929190615591565b60405180910390a25050505050565b6000610f3f611482565b6000848152600f8201602052604090205490915060ff16610f765760405163e1f8801360e01b81526004810184905260240161028e565b610f7f82612484565b6000838152601182016020526040902060018101546003820154915490919084358114610fee5760405162461bcd60e51b815260206004820152601a60248201527f61737365744964206368616e6765206e6f7420616c6c6f776564000000000000604482015260640161028e565b6000868152601185016020526040908190209086013560029091015561101a60a08601608087016155b6565b60008781526011860160205260409020600401805460ff1916911515919091179055801580159061104f575082856020013514155b156111f257600083611065602088013585615144565b61106f9190615349565b6000888152602787016020908152604080832086845290915281205491925090829061109c9086906155d3565b6110a6919061536b565b9050806110b38985612725565b10156111165760405162461bcd60e51b815260206004820152602c60248201527f636f6c6c61746572616c20726174696f20696e76616c69642c206e6f7420656e60448201526b6f7567682062616c616e636560a01b606482015260840161028e565b866040013582111561117c5760405162461bcd60e51b815260206004820152602960248201527f6d6178206361706163697479206d757374206265203e3d207574696c697a656460448201526820636170616369747960b81b606482015260840161028e565b600088815260118701602090815260408083208a83013560018201819055600390910186905560278a018352818420878552835292819020849055805192835290820184905289917f859dcf182c6cdb0b87490f406c38a81a37e53defb3f5f9e20d5525ae9757a700910160405180910390a250505b60405186907fad70f6507f1aeb0fd1f13346cb14180cc3c76c7a31441dcd28a5e1b78c6f7a7390600090a2505050505050565b600080611230611482565b90508060010154461461124a5761124561274f565b611250565b80600201545b91505090565b60408051808201909152606080825260208201526000611274611482565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156112de57602002820191906000526020600020905b8154815260200190600101908083116112ca575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561135e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116113255790505b505050919092525050815151919250501580611381575060208101515181515114155b1561147a576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156113ee57602002820191906000526020600020905b8154815260200190600101908083116113da575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561146e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114355790505b50505050508152505090505b949350505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600082116114f65760405162461bcd60e51b815260206004820152601760248201527f6d696e7420616d6f756e74206d757374206265203e2030000000000000000000604482015260640161028e565b600081116115465760405162461bcd60e51b815260206004820152601760248201527f746f74616c207072696365206d757374206265203e2030000000000000000000604482015260640161028e565b6000611550611482565b6000858152600f8201602052604090205490915060ff166115875760405163e1f8801360e01b81526004810185905260240161028e565b61159084612450565b6115b057604051639262bf2960e01b81526004810185905260240161028e565b6000848152601182016020908152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003820154606082015260049091015460ff161515608082015261160d8580866127f7565b600061162286878785600001518860036129ad565b50506000878152600c850160209081526040808320600d880190925291829020915192935088927f1e0fe2db2ce2d56ef315966bafe53189281e5297e62c10199727acdc3b547f7e92611679928692909190615663565b60405180910390a2505050505050565b6000611693611482565b905082516000036116ba57604051633276fee960e11b81526004810185905260240161028e565b601083511061171a5760405162461bcd60e51b815260206004820152602660248201527f73796d626f6c206d757374206265206c657373207468616e203136206368617260448201526561637465727360d01b606482015260840161028e565b6000848152600f8201602052604090205460ff1661174e5760405163e1f8801360e01b81526004810185905260240161028e565b61175784612450565b156117a45760405162461bcd60e51b815260206004820152601860248201527f6f626a65637420616c726561647920746f6b656e697a65640000000000000000604482015260640161028e565b6117ad83612415565b6117f95760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b60008251116118435760405162461bcd60e51b81526020600482015260166024820152756e616d65206d757374206e6f7420626520656d70747960501b604482015260640161028e565b6000848152600c82016020526040902061185d84826154d1565b506000848152600d82016020526040902061187883826154d1565b508381602c018460405161188c919061547c565b9081526020016040518091039020819055507ff4416a16cc504990a6dc76d2ef631f24500fbcc260ee1530d9b74a4ad28781738484846040516118d19392919061568e565b60405180910390a150505050565b600081516000036118f257506000919050565b506020015190565b60008061190685612a3a565b905061191381858561191c565b95945050505050565b600080611927611482565b6000868152601f820160209081526040808320888452909152902054909150801580159061197057506000818152601d83016020908152604080832087845290915290205460ff165b1561198057600192505050610407565b50600095945050505050565b60008260600151116119d05760405162461bcd60e51b815260206004820152600d60248201526c06c696d6974206e6f74203e203609c1b604482015260640161028e565b6119dd8260400151612a5a565b611a295760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b60c082015115611a4c5760405163c96caacd60e01b815260040160405180910390fd5b60e082015115611a6f57604051632696d55d60e11b815260040160405180910390fd5b8160a0015115611a92576040516313b4184f60e31b815260040160405180910390fd5b6000611a9c611482565b6000858152601182016020908152604091829020825160a08101845281548082526001830154938201939093526002820154818501526003820154606082015260049091015460ff161515608082015291860151929350909114611b425760405162461bcd60e51b815260206004820152601e60248201527f6173736574206e6f74206d61746368696e67207769746820656e746974790000604482015260640161028e565b600061271082602001518660600151611b5b9190615144565b611b659190615349565b8260600151611b74919061536b565b90508082604001511015611bca5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820617661696c61626c65206361706163697479000000604482015260640161028e565b80611bd9878760400151612725565b1015611c1c5760405162461bcd60e51b81526020600482015260126024820152711b9bdd08195b9bdd59da0818d85c1a5d185b60721b604482015260640161028e565b8451421115611c6d5760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203c20626c6f636b2e74696d657374616d7000000000604482015260640161028e565b8451602086015111611cc15760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203e206d617475726174696f6e206461746500000000604482015260640161028e565b845160208601516201518091611cd6916155d3565b11611d315760405162461bcd60e51b815260206004820152602560248201527f706f6c69637920706572696f64206d757374206265206d6f7265207468616e20604482015264612064617960d81b606482015260840161028e565b6000611d3e876001611256565b80515190915080611d915760405162461bcd60e51b815260206004820181905260248201527f6d757374206861766520666565207363686564756c6520726563656976657273604482015260640161028e565b61010087015151611da287806150c2565b9050811115611df35760405162461bcd60e51b815260206004820152601d60248201527f746f6f206d616e7920636f6d6d697373696f6e20726563656976657273000000604482015260640161028e565b61012088015151818114611e535760405162461bcd60e51b815260206004820152602160248201527f6e756d626572206f6620636f6d6d697373696f6e7320646f6e2774206d6174636044820152600d60fb1b606482015260840161028e565b6000805b82811015611e9b578a61012001518181518110611e7657611e7661537e565b602002602001015182611e89919061536b565b9150611e9481615429565b9050611e57565b50611ea96002612710615349565b811115611ee05780611ebe6002612710615349565b6040516309281e0960e01b81526004810192909252602482015260440161028e565b611eed60208a018a6150c2565b9050611ef98a806150c2565b905014611f485760405162461bcd60e51b815260206004820152601b60248201527f7374616b65686f6c6465727320726f6c6573206d69736d617463680000000000604482015260640161028e565b5050505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c08101829052600090611fc69060e00160405160208183030381529060405280519060200120610cde565b9695505050505050565b6000611fda611482565b9050611fe584612a9a565b6000848152600a820160209081526040808320869055600b840182529182902084905581518681529081018590529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060016118d1565b600080600080845160410361208b5750505060208201516040830151606084015160001a80801561207b576001811461208457612089565b601b9150612089565b601c91505b505b60006120ef6120e7886040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b838686612b81565b50979650505050505050565b600080612106611482565b9050600061211384610625565b6000908152600a90920160205250604090205492915050565b6000612136611482565b90508360000361217c5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640161028e565b826000036121c15760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640161028e565b816000036122035760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640161028e565b6000848152601f8201602090815260408083208684529091529020546122276105f5565b84148015612260575061225d6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b81145b801561226c5750828114155b156122de57600182602a0154116122d15760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840161028e565b602a820180546000190190555b6122e66105f5565b8414801561231f575061231c6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b83145b1561239a5761232d85612c45565b6001600160a01b03166123677fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b03160361238e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a001610f26565b600080612420611482565b90506000801b81602c0184604051612438919061547c565b90815260200160405180910390205414915050919050565b60008061245b611482565b6000848152600c82016020526040902080549192509061247a90615442565b1515949350505050565b803515612624576124958135612a5a565b6124e15760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b80602001356001111580156124fc5750612710816020013511155b6125565760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840161028e565b61256660a08201608083016155b6565b1580612576575060008160400135115b6125e85760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840161028e565b8060400135816060013511156126215760408051630102498560e11b81526060830135600482015290820135602482015260440161028e565b50565b6020810135156126765760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640161028e565b61268660a08201608083016155b6565b156126d35760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640161028e565b6040810135156126215760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640161028e565b600080612730611482565b6000938452601501602090815260408085209585529490525050205490565b60008061275a611482565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8160040160405161278e91906156b9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b826000036128535760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b606482015260840161028e565b600081116128a35760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e7300604482015260640161028e565b60006128ad611482565b90506128be60008585856001612ca5565b6000838152601682016020526040812080548492906128de90849061536b565b9091555050600083815260158201602090815260408083208784529091528120805484929061290e90849061536b565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916129579161572f565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f91889190615762565b60405180910390a350505050565b60008060006129c0898989898989612e79565b60006129d08a8a8a8a8a8a613285565b905080604001519250806060015191506129f88a8a83602001518b8b86600001518c8c613555565b93506000612a04611482565b600086815260218201602052604090206008015490915060001901612a2c57612a2c8561377a565b505096509650969350505050565b600080612a45611482565b6000938452600a016020525050604090205490565b600080612a65611482565b9050806013016000612a7685612c45565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000612aa4611482565b600083815260098201602052604090205490915060ff1615612b215760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161028e565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612bb85750600090506003612c3c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c0c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c3557600060019250925050612c3c565b9150600090505b94509492505050565b60006001600160601b03821615612c9e5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161028e565b5060601c90565b6000612caf611482565b90506000612cbc856138ff565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612d1757602002820191906000526020600020905b815481526020019060010190808311612d03575b5050505050905060005b8151811015612e6e576000828281518110612d3e57612d3e61537e565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612d748987848461391f565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612dac90849061536b565b90915550508b15612df05760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612dea9084906155d3565b90915550505b8715612e5a5760008a8152601b8801602090815260408083208684529091529020548690612e1f908b90615144565b612e299190615349565b60008b8152601b89016020908152604080832087845290915281208054909190612e5490849061536b565b90915550505b50505080612e6790615429565b9050612d21565b505050505050505050565b6000612e83611482565b90508615801590612ea457506000878152600f8201602052604090205460ff165b612f015760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b606482015260840161028e565b6000868152600f8201602052604081205460ff16906001600160601b038816158015612f555750826013016000612f378a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b038816158015612fae5750846013016000612f908a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b9050612fba898861396f565b8380612fc35750825b61300f5760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c69640000000000000000604482015260640161028e565b81806130185750805b6130645760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c6964000000000000000000604482015260640161028e565b878a036130b35760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e0000604482015260640161028e565b8380156130bd5750805b806130cd57508280156130cd5750815b6131385760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b606482015260840161028e565b60008a815260158601602090815260408083208e845290915290205489111561319a5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015260640161028e565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a916131d4916155d3565b10156132375760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b606482015260840161028e565b60028614806132465750600386145b611f485760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b604482015260640161028e565b6132b06040518060800160405280600081526020016000815260200160008152602001600081525090565b60006132ba611482565b84835260208301879052905060006001600160601b03861615801561330757508160130160006132e988612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b602083015115801590613324575080806133245750825115155b1561354957600086815260228301602090815260408083208b8452909152812054908190036133535750613549565b600081815260218401602090815260409091206005810154600290910154918601518651919291829190846133888484615144565b613392919061536b565b61339c919061536b565b6133a6919061536b565b6133b0919061536b565b86516133bc9084615144565b11156133ca57505050613549565b5050600080831561347757602080870151600085815260218801909252604090912060050154106133ff578560200151613414565b60008381526021860160205260409020600501545b6000848152602187016020526040902060058101546002909101549193509061343d9084615144565b6134479190615349565b9050600061345988858f85878a613abc565b9050808760400181815161346d919061536b565b90525061350c9050565b85516000848152602187016020526040902060020154106134995785516134ae565b60008381526021860160205260409020600201545b600084815260218701602052604090206002810154600590910154919250906134d79083615144565b6134e19190615349565b915060006134f388858f85878a613abc565b90508087606001818151613507919061536b565b905250505b818660200181815161351e91906155d3565b9052508551811161353b5785516135369082906155d3565b61353e565b60005b86525061330a915050565b50509695505050505050565b600080613560611482565b90506000816020016000815461357590615429565b91905081905590506135e360405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080613626575060018a105b15613638576003610100820152613671565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c929061366b90849061536b565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d89610100015160405161376396959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b6000613784611482565b905061378f82613cfe565b156137dc5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c69737400000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061382957506138298783613d91565b15613849575060008181526021860160205260409020600a015490613815565b80801561387c576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506138a0565b60008681526022880160209081526040808320888452909152902080549089905593505b83156138c95760008481526021880160205260408082206009018a90558982529020600a018490555b6000868152602388016020908152604080832088845290915281208054916138f083615429565b91905055505050505050505050565b60008061390a611482565b60009384526016016020525050604090205490565b60008061392c8685615144565b905060008515613945576139408683615349565b613948565b60005b9050808410156139615761395c84826155d3565b613964565b60005b979650505050505050565b6001600160801b038211156139d05760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b606482015260840161028e565b6001600160801b03811115613a275760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d6974604482015260640161028e565b60008211613a705760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b604482015260640161028e565b60008111613ab85760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b604482015260640161028e565b5050565b600080613ac7611482565b9050613ad4878686613df1565b600087815260218201602052604081206007015460031480613af65750600389145b15613b0357506003613b07565b5060025b6000600382148015613b2e5750600089815260218401602052604090206001810154905414155b15613b4a57506000888152602183016020526040902054613b4d565b50865b8415613b8357600089815260218401602052604090208054600190910154613b7c9184918491908c908c613f16565b9350613baf565b600089815260218401602052604090208054600490910154613bac9184918491908c908b613f16565b93505b6000898152602184016020908152604080832080548452602787018352818420600190910154845290915281208054899290613bec9084906155d3565b9091555050600089815260218401602052604090208054600190910154613c1691908a908a6140f1565b50600089815260218401602052604090208054600490910154613c3b918a91896140f1565b505050600087815260218201602052604090206002015460011115613c7b57600087815260218201602052604090206003600890910155613c7b87614385565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b600080613d09611482565b60008481526021820160205260409020600181015460049091015491925090841580159061191357506000858152602184016020526040902060090154151580613d65575060008581526021840160205260409020600a015415155b806119135750600091825260229290920160209081526040808320938352929052205491909114919050565b600080613d9c611482565b600085815260218201602052604080822060028082015460059283015489865293909420908101549101549394509192909190613dd98482615144565b613de38385615144565b101598975050505050505050565b6000613dfb611482565b9050600080613e098661451a565b91509150613e17858561396f565b8060200151841115613e6b5760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c617267650000604482015260640161028e565b8160200151851115613ebf5760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c61726765604482015260640161028e565b848260200151613ecf91906155d3565b6000878152602185016020908152604090912060020191909155810151613ef79085906155d3565b6000968752602190930160205250506040909320600501929092555050565b600080613f21611482565b90506000613f2f888a611256565b6026830154909150600090600160401b900461ffff1615613fdd57602683015461271090613f6890600160401b900461ffff1687615144565b613f729190615349565b9050613f7e818561536b565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd88846002604051613fc7939291909283526020830191909152604082015260600190565b60405180910390a3613fdb878988846140f1565b505b81515160005b818110156140e257612710846020015182815181106140045761400461537e565b602002602001015161ffff168861401b9190615144565b6140259190615349565b925082156140d0576140568b856000015183815181106140475761404761537e565b60200260200101518a866140f1565b50614061838761536b565b9550836000015181815181106140795761407961537e565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a8660026040516140c7939291909283526020830191909152604082015260600190565b60405180910390a35b806140da81615429565b915050613fe3565b50505050509695505050505050565b6000806140fc611482565b600085815260158201602090815260408083208a845290915290205490915083111561417a5760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b606482015260840161028e565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916141b4916155d3565b10156142285760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b656400606482015260840161028e565b6142328685614590565b600084815260158201602090815260408083208984529091528120805485929061425d9084906155d3565b9091555050600084815260158201602090815260408083208884529091528120805485929061428d90849061536b565b909155506142a19050868686866000612ca5565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061581f8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061581f8339815191529181900360a00190a350600195945050505050565b600061438f611482565b905061439a82613cfe565b156143a8576143a88261463c565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015614480576040808201516000858152602185016020908152838220805483526027870182528483206001909101548352905291822080549192909161447a9084906155d3565b90915550505b6003816101000151146144e3576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103614515576000838152602183016020526040908190206001015490820151614515919081906148d2565b505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061454c611482565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b600061459a611482565b60008381526018820160209081526040808320805482518185028101850190935280835294955092939092918301828280156145f557602002820191906000526020600020905b8154815260200190600101908083116145e1575b5050505050905060005b81518110156103795761462c858584848151811061461f5761461f61537e565b6020026020010151614aef565b61463581615429565b90506145ff565b6000614646611482565b905061465182613cfe565b61469d5760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c6973740000000000000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260238601845282852081865290935292205461471c5760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f742065786973740000604482015260640161028e565b6000828152602284016020908152604080832084845290915290205484146147c1576000848152602184016020526040808220600901548083529120600a0154851461479e5760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600a90810154938352912001556147ef565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415614887576000848152602184016020526040808220600a015480835291206009015485146148685760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a0183905584835260238601825280832084845290915281208054916148c78361579b565b919050555050505050565b60006148dc611482565b600084815260158201602090815260408083208884529091529020549091508211156149565760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b606482015260840161028e565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391614990916155d3565b1015614a045760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b65640000000000606482015260840161028e565b614a0e8484614590565b600083815260168201602052604081208054849290614a2e9084906155d3565b90915550506000838152601582016020908152604080832087845290915281208054849290614a5e9084906155d3565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091614aa7916157b2565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f918891906157e5565b6000614af9611482565b90506000614b2b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b81525061061a565b60008581526015840160209081526040808320898452909152812054919250614b53866138ff565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190614b9d8585858561391f565b90508015614d60576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290614bd890849061536b565b90915550506000888152601588016020908152604080832089845290915281208054839290614c089084906155d3565b9091555050600088815260158801602090815260408083208d845290915281208054839290614c3890849061536b565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061581f8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061581f8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080600080600060a08688031215614d8457600080fd5b8535945060208601359350604086013567ffffffffffffffff80821115614daa57600080fd5b908701906060828a031215614dbe57600080fd5b90935060608701359080821115614dd457600080fd5b5086016101408189031215614de857600080fd5b949793965091946080013592915050565b600060208284031215614e0b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614e3957600080fd5b813567ffffffffffffffff80821115614e5457614e54614e12565b604051601f8301601f19908116603f01168101908282118183101715614e7c57614e7c614e12565b81604052838152866020858801011115614e9557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215614eca57600080fd5b83359250602084013567ffffffffffffffff80821115614ee957600080fd5b614ef587838801614e28565b93506040860135915080821115614f0b57600080fd5b50614f1886828701614e28565b9150509250925092565b60008082840360c0811215614f3657600080fd5b8335925060a0601f1982011215614f4c57600080fd5b506020830190509250929050565b60008060408385031215614f6d57600080fd5b50508035926020909101359150565b6020808252825160408383015280516060840181905260009291820190839060808601905b80831015614fc15783518252928401926001929092019190840190614fa1565b5086840151868203601f190160408801528051808352908501935090840191506000905b8082101561500957835161ffff168352928401929184019160019190910190614fe5565b50909695505050505050565b60008060006060848603121561502a57600080fd5b505081359360208301359350604090920135919050565b60005b8381101561505c578181015183820152602001615044565b50506000910152565b6000815180845261507d816020860160208601615041565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006150b06080830185615065565b82810360608401526139648185615065565b6000808335601e198436030181126150d957600080fd5b83018035915067ffffffffffffffff8211156150f457600080fd5b6020019150600581901b360382131561510c57600080fd5b9250929050565b801515811461262157600080fd5b6000813561031381615113565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103135761031361512e565b67ffffffffffffffff83111561517357615173614e12565b600160401b83111561518757615187614e12565b8054838255808410156151be576000828152602081208581019083015b808210156151ba578282556001820191506151a4565b5050505b5060008181526020812083915b858110156151e7578235828201556020909201916001016151cb565b505050505050565b5b81811015613ab857600081556001016151f0565b67ffffffffffffffff83111561521c5761521c614e12565b600160401b83111561523057615230614e12565b805483825580841015615256578160005260206000206152548282018683016151ef565b505b50818160005260208060002060005b8681101561527f5783358282015592820192600101615265565b50505050505050565b81358155602082013560018201556040820135600282015560608201356003820155600481016152d16152bd60808501615121565b825490151560ff1660ff1991909116178255565b6152fa6152e060a08501615121565b82805461ff00191691151560081b61ff0016919091179055565b5060c0820135600582015560e0820135600682015561531d6101008301836150c2565b61532b81836007860161515b565b505061533b6101208301836150c2565b6103d4818360088601615204565b60008261536657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156103135761031361512e565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126153ab57600080fd5b83018035915067ffffffffffffffff8211156153c657600080fd5b60200191503681900382131561510c57600080fd5b86815260a060208201528460a0820152848660c0830137600060c08683010152600060c0601f19601f8801168301019050846040830152836060830152826080830152979650505050505050565b60006001820161543b5761543b61512e565b5060010190565b600181811c9082168061545657607f821691505b60208210810361547657634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161548e818460208701615041565b9190910192915050565b601f82111561451557806000526020600020601f840160051c810160208510156154bf5750805b610379601f850160051c8301826151ef565b815167ffffffffffffffff8111156154eb576154eb614e12565b6154ff816154f98454615442565b84615498565b602080601f831160018114615534576000841561551c5750858301515b600019600386901b1c1916600185901b1785556151e7565b600085815260208120601f198616915b8281101561556357888601518255948401946001909101908401615544565b50858210156155815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006155a46040830185615065565b82810360208401526119138185615065565b6000602082840312156155c857600080fd5b813561040781615113565b818103818111156103135761031361512e565b600081546155f381615442565b808552602060018381168015615610576001811461562a57615658565b60ff1985168884015283151560051b880183019550615658565b866000528260002060005b858110156156505781548a8201860152908301908401615635565b890184019650505b505050505092915050565b83815260606020820152600061567c60608301856155e6565b8281036040840152611fc681856155e6565b8381526060602082015260006156a76060830185615065565b8281036040840152611fc68185615065565b60008083546156c781615442565b600182811680156156df57600181146156f457615723565b60ff1984168752821515830287019450615723565b8760005260208060002060005b8581101561571a5781548a820152908401908201615701565b50505082870194505b50929695505050505050565b81815260406020820152600061040760408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b6000816157aa576157aa61512e565b506000190190565b81815260406020820152600061040760408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba26469706673582212200bcf7862a6456e4582ce6e449869108edaa6bcd2d0467e6aa2d7b78f636e968264736f6c63430008110033", + "nonce": "0x96", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7281b30ceb6715e3fe8f504fa9c474767c361390969652fc08d6c6ebb479aae0", + "transactionType": "CREATE", + "contractName": "GovernanceFacet", + "contractAddress": "0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0xa0efd", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50610835806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806310a2bbed146100675780631d5102171461008f57806322f153db146100a4578063337781ea146100f1578063371d624414610104578063e13b9b1414610117575b600080fd5b6000805160206107e08339815191525460ff1660405190151581526020015b60405180910390f35b6100a261009d366004610723565b61013e565b005b6100e36100b2366004610723565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef602052604090205490565b604051908152602001610086565b6100a26100ff366004610723565b61034a565b6100a2610112366004610723565b610462565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff0546100e3565b61014661056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061018e8261017983610599565b6001600160601b03193360601b1691906105aa565b610253576001600160601b03193360601b165b8260006101f2826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1461021b57610216610211856001600160601b03193360601b166101b7565b610606565b61022c565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161024a9493929190610782565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef60205260409020546000805160206107e0833981519152904210156102eb5760405162461bcd60e51b815260206004820152602260248201527f557067726164652068617320616c7265616479206265656e207363686564756c604482015261195960f21b606482015260840161024a565b60298101546102fa90426107be565b6000858152602883016020908152604091829020929092555185815233917f3a44e179d9e19e4401346b6bded52859fff9aa9543bff59d04f48cd5c86056a191015b60405180910390a250505050565b61035261056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103858261017983610599565b61039c576001600160601b03193360601b166101a1565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef60205260409020546000805160206107e08339815191529061041b5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081d5c19dc98591948125160721b604482015260640161024a565b6000848152602882016020526040808220919091555133907f01a336412585b8675d19f339f8e31aca56990a1a2f0b4526aa86e2bcfa3660a39061033c9087815260200190565b61046a61056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061049d8261017983610599565b6104b4576001600160601b03193360601b166101a1565b6000805160206107e0833981519152603c841180156104d5575062093a8084105b61052b5760405162461bcd60e51b815260206004820152602160248201527f696e76616c696420757067726164652065787069726174696f6e20706572696f6044820152601960fa1b606482015260840161024a565b602981018490556040518481527f8f6d4287e1a643ad848fe5c460fdac7c1294b9ca04b7022b055e7f664cf9efdf9060200160405180910390a150505050565b60006105946040518060400160405280600681526020016553797374656d60d01b815250610599565b905090565b60006105a482610637565b92915050565b60006105b7848484610652565b156105c4575060016105ff565b6105cf848484610694565b156105dc575060016105ff565b6105ee846105e861056b565b84610694565b156105fb575060016105ff565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000815160000361064a57506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205461068b818585610694565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206107e083398151915290801580159061070757506000818152601d83016020908152604080832087845290915290205460ff165b15610717576001925050506105ff565b50600095945050505050565b60006020828403121561073557600080fd5b5035919050565b6000815180845260005b8181101561076257602081850181015186830182015201610746565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006107a1608083018561073c565b82810360608401526107b3818561073c565b979650505050505050565b808201808211156105a457634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212200410d8b81eeb45ebedc2d58ca1d4901ac530b3caff84efc5e448189aa57c71cb64736f6c63430008110033", + "nonce": "0x97", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeedafdb736d3eee4196d2b3b1f5f147c7f4af2b615a28b6a0864032db5aa4337", + "transactionType": "CREATE", + "contractName": "MarketFacet", + "contractAddress": "0x194A3fDc437b5398E4F334940aBBe278491D1378", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x381d65", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50613237806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063810a374d1161005b578063810a374d1461017b5780638d81a1d3146101965780639df00480146101b9578063ef706adf146101e757600080fd5b8063012ee17b1461008d5780634579268a146100ba5780634c8198dc1461015257806359e148fc14610173575b600080fd5b6100a061009b366004612fd6565b6101fc565b604080519283526020830191909152015b60405180910390f35b6100cd6100c8366004613008565b610218565b6040516100b19190600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525092915050565b610165610160366004613021565b61022f565b6040519081526020016100b1565b610165610242565b610183610251565b60405161ffff90911681526020016100b1565b6101a96101a4366004613008565b61025b565b60405190151581526020016100b1565b6101cc6101c7366004612fd6565b610266565b604080519384526020840192909252908201526060016100b1565b6101fa6101f5366004613008565b610434565b005b60008061020b86868686610618565b9097909650945050505050565b610220612f73565b61022982610845565b92915050565b600061023b83836108ea565b9392505050565b600061024c610915565b905090565b600061024c61092a565b60006102298261094a565b600080600080356001600160e01b03191661028081610970565b156102c75760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026102d16109ae565b60030154036103225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b600261032c6109ae565b60030155610339336109d2565b6040518060400160405280601381526020017222bc32b1baba32902634b6b4ba1027b33332b960691b8152506103828261037283610a03565b61037b33610a0e565b9190610a23565b6103f35761038f33610a0e565b8260006103a58261039f33610a0e565b90610a7e565b146103c4576103bf6103ba8561039f33610a0e565b610aa9565b6103d5565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016102be9493929190613089565b60006103fe336109d2565b905061040f818c8c8c8c6002610ada565b96509650965050505060016104226109ae565b60030181905550509450945094915050565b6000356001600160e01b03191661044a81610970565b1561048c5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016102be565b60026104966109ae565b60030154036104e75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b60026104f16109ae565b600301556104fe336109d2565b6040518060400160405280600c81526020016b21b0b731b2b61027b33332b960a11b8152506105308261037283610a03565b61053d5761038f33610a0e565b600161054885610845565b61010001511461058d5760405162461bcd60e51b815260206004820152601060248201526f6f66666572206e6f742061637469766560801b60448201526064016102be565b600061059885610845565b519050806105ad6105a833610a0e565b610b67565b146105fa5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206d656d626572206f6620656e746974792063616e2063616e63656c60448201526064016102be565b61060385610b87565b50505060016106106109ae565b600301555050565b60008060006106256109ae565b600086815260228201602090815260408083208a845290915281205491925085905b811561081e5760008381526021850160205260408120600201541561067f576000848152602186016020526040902060070154610682565b60035b905060006106908c83610d1c565b60008681526021880160205260408120600201549192509015806106c65750600086815260218801602052604090206002015485105b6106e35760008681526021880160205260409020600201546106e5565b845b90506106f181866130d0565b945060005b82602001515181101561078a576127108360200151828151811061071c5761071c6130e3565b602002602001015161ffff168361073391906130f9565b61073d9190613110565b610747908b613132565b99508260200151818151811061075f5761075f6130e3565b602002602001015161ffff16896107769190613132565b98508061078281613145565b9150506106f6565b506026870154600160401b900461ffff16156107f2576026870154612710906107be90600160401b900461ffff16836130f9565b6107c89190613110565b6107d2908a613132565b60268801549099506107ef90600160401b900461ffff1689613132565b97505b836107fc81613145565b6000978852602189016020526040909720600a01549694506106479350505050565b6000811161082c5784610836565b6108368186613110565b94505050505094509492505050565b61084d612f73565b60006108576109ae565b60009384526021016020908152604093849020845161016081018652815481526001820154928101929092526002810154948201949094526003840154606082015260048401546080820152600584015460a0820152600684015460c0820152600784015460e082015260088401546101008201526009840154610120820152600a909301546101408401525090919050565b6000806108f56109ae565b600094855260220160209081526040808620948652939052505090205490565b6000806109206109ae565b6020015492915050565b6000806109356109ae565b60260154600160401b900461ffff1692915050565b6000806109556109ae565b60009384526021016020525050604090206008015460011490565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806109dd6109ae565b905060006109ea84610a0e565b6000908152600a90920160205250604090205492915050565b600061022982610f48565b60601b6bffffffffffffffffffffffff191690565b6000610a30848484610f63565b15610a3d5750600161023b565b610a48848484610f85565b15610a555750600161023b565b610a6784610a61610ff5565b84610f85565b15610a745750600161023b565b5060009392505050565b600080610a896109ae565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000806000610aed89898989898961101e565b6000610afd8a8a8a8a8a8a611437565b90508060400151925080606001519150610b258a8a83602001518b8b86600001518c8c611707565b93506000610b316109ae565b600086815260218201602052604090206008015490915060001901610b5957610b59856118cd565b505096509650969350505050565b600080610b726109ae565b6000938452600a016020525050604090205490565b6000610b916109ae565b9050610b9c82611a52565b15610baa57610baa82611ae5565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015610c825760408082015160008581526021850160209081528382208054835260278701825284832060019091015483529052918220805491929091610c7c9084906130d0565b90915550505b600381610100015114610ce5576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103610d17576000838152602183016020526040908190206001015490820151610d1791908190611d7b565b505050565b60408051808201909152606080825260208201526000610d3a6109ae565b6000858152602d82016020908152604080832087845282528083208151815460609481028201850184529281018381529596509394909284928491840182828015610da457602002820191906000526020600020905b815481526020019060010190808311610d90575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610deb5790505b505050919092525050815151919250501580610e47575060208101515181515114155b15610f40576000808052602d8301602090815260408083208784528252918290208251815460609381028201840185529381018481529093919284928491840182828015610eb457602002820191906000526020600020905b815481526020019060010190808311610ea0575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f3457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610efb5790505b50505050508152505090505b949350505050565b60008151600003610f5b57506000919050565b506020015190565b600080610f6f85610b67565b9050610f7c818585610f85565b95945050505050565b600080610f906109ae565b6000868152601f8201602090815260408083208884529091529020549091508015801590610fd957506000818152601d83016020908152604080832087845290915290205460ff165b15610fe95760019250505061023b565b50600095945050505050565b600061024c6040518060400160405280600681526020016553797374656d60d01b815250610a03565b60006110286109ae565b9050861580159061104957506000878152600f8201602052604090205460ff165b6110a65760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b60648201526084016102be565b6000868152600f8201602052604081205460ff16906001600160601b0388161580156110fa57508260130160006110dc8a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b03881615801561115357508460130160006111358a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b905061115f8988612006565b83806111685750825b6111b45760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c6964000000000000000060448201526064016102be565b81806111bd5750805b6112095760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c696400000000000000000060448201526064016102be565b878a036112585760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e000060448201526064016102be565b8380156112625750805b8061127257508280156112725750815b6112dd5760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b60648201526084016102be565b60008a815260158601602090815260408083208e845290915290205489111561133f5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016102be565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a91611379916130d0565b10156113dc5760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b60648201526084016102be565b60028614806113eb5750600386145b61142a5760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b60448201526064016102be565b5050505050505050505050565b6114626040518060800160405280600081526020016000815260200160008152602001600081525090565b600061146c6109ae565b84835260208301879052905060006001600160601b0386161580156114b9575081601301600061149b88611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b6020830151158015906114d6575080806114d65750825115155b156116fb57600086815260228301602090815260408083208b84529091528120549081900361150557506116fb565b6000818152602184016020908152604090912060058101546002909101549186015186519192918291908461153a84846130f9565b6115449190613132565b61154e9190613132565b6115589190613132565b6115629190613132565b865161156e90846130f9565b111561157c575050506116fb565b5050600080831561162957602080870151600085815260218801909252604090912060050154106115b15785602001516115c6565b60008381526021860160205260409020600501545b600084815260218701602052604090206005810154600290910154919350906115ef90846130f9565b6115f99190613110565b9050600061160b88858f85878a612153565b9050808760400181815161161f9190613132565b9052506116be9050565b855160008481526021870160205260409020600201541061164b578551611660565b60008381526021860160205260409020600201545b6000848152602187016020526040902060028101546005909101549192509061168990836130f9565b6116939190613110565b915060006116a588858f85878a612153565b905080876060018181516116b99190613132565b905250505b81866020018181516116d091906130d0565b905250855181116116ed5785516116e89082906130d0565b6116f0565b60005b8652506114bc915050565b50509695505050505050565b6000806117126109ae565b90506000816020016000815461172790613145565b91829055509050611736612f73565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080611779575060018a105b1561178b5760036101008201526117c4565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c92906117be908490613132565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d8961010001516040516118b696959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b60006118d76109ae565b90506118e282611a52565b1561192f5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c6973740000000060448201526064016102be565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061197c575061197c8783612395565b1561199c575060008181526021860160205260409020600a015490611968565b8080156119cf576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506119f3565b60008681526022880160209081526040808320888452909152902080549089905593505b8315611a1c5760008481526021880160205260408082206009018a90558982529020600a018490555b600086815260238801602090815260408083208884529091528120805491611a4383613145565b91905055505050505050505050565b600080611a5d6109ae565b600084815260218201602052604090206001810154600490910154919250908415801590610f7c57506000858152602184016020526040902060090154151580611ab9575060008581526021840160205260409020600a015415155b80610f7c5750600091825260229290920160209081526040808320938352929052205491909114919050565b6000611aef6109ae565b9050611afa82611a52565b611b465760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c697374000000000000000060448201526064016102be565b600082815260218201602090815260408083206001810154600490910154818552602386018452828520818652909352922054611bc55760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f74206578697374000060448201526064016102be565b600082815260228401602090815260408083208484529091529020548414611c6a576000848152602184016020526040808220600901548083529120600a01548514611c475760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600a9081015493835291200155611c98565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415611d30576000848152602184016020526040808220600a01548083529120600901548514611d115760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a018390558483526023860182528083208484529091528120805491611d708361315e565b919050555050505050565b6000611d856109ae565b60008481526015820160209081526040808320888452909152902054909150821115611dff5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016102be565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391611e39916130d0565b1015611ead5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016102be565b611eb784846123f5565b600083815260168201602052604081208054849290611ed79084906130d0565b90915550506000838152601582016020908152604080832087845290915281208054849290611f079084906130d0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091611f5091613175565b60405180910390a36000838152601582016020908152604080832087845290915290819020549051339186916000805160206131e283398151915291611f98918891906131a8565b60405180910390a350505050565b60006001600160601b03821615611fff5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016102be565b5060601c90565b6001600160801b038211156120675760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b60648201526084016102be565b6001600160801b038111156120be5760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d697460448201526064016102be565b600082116121075760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b60448201526064016102be565b6000811161214f5760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b60448201526064016102be565b5050565b60008061215e6109ae565b905061216b8786866124a8565b60008781526021820160205260408120600701546003148061218d5750600389145b1561219a5750600361219e565b5060025b60006003821480156121c55750600089815260218401602052604090206001810154905414155b156121e1575060008881526021830160205260409020546121e4565b50865b841561221a576000898152602184016020526040902080546001909101546122139184918491908c908c6125cd565b9350612246565b6000898152602184016020526040902080546004909101546122439184918491908c908b6125cd565b93505b60008981526021840160209081526040808320805484526027870183528184206001909101548452909152812080548992906122839084906130d0565b90915550506000898152602184016020526040902080546001909101546122ad91908a908a6127a8565b506000898152602184016020526040902080546004909101546122d2918a91896127a8565b5050506000878152602182016020526040902060020154600111156123125760008781526021820160205260409020600360089091015561231287610b87565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b6000806123a06109ae565b6000858152602182016020526040808220600280820154600592830154898652939094209081015491015493945091929091906123dd84826130f9565b6123e783856130f9565b101598975050505050505050565b60006123ff6109ae565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561245a57602002820191906000526020600020905b815481526020019060010190808311612446575b5050505050905060005b81518110156124a1576124918585848481518110612484576124846130e3565b6020026020010151612a3c565b61249a81613145565b9050612464565b5050505050565b60006124b26109ae565b90506000806124c086612cb9565b915091506124ce8585612006565b80602001518411156125225760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c61726765000060448201526064016102be565b81602001518511156125765760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c6172676560448201526064016102be565b84826020015161258691906130d0565b60008781526021850160209081526040909120600201919091558101516125ae9085906130d0565b6000968752602190930160205250506040909320600501929092555050565b6000806125d86109ae565b905060006125e6888a610d1c565b6026830154909150600090600160401b900461ffff16156126945760268301546127109061261f90600160401b900461ffff16876130f9565b6126299190613110565b90506126358185613132565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8884600260405161267e939291909283526020830191909152604082015260600190565b60405180910390a3612692878988846127a8565b505b81515160005b8181101561279957612710846020015182815181106126bb576126bb6130e3565b602002602001015161ffff16886126d291906130f9565b6126dc9190613110565b925082156127875761270d8b856000015183815181106126fe576126fe6130e3565b60200260200101518a866127a8565b506127188387613132565b955083600001518181518110612730576127306130e3565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a86600260405161277e939291909283526020830191909152604082015260600190565b60405180910390a35b8061279181613145565b91505061269a565b50505050509695505050505050565b6000806127b36109ae565b600085815260158201602090815260408083208a84529091529020549091508311156128315760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016102be565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161286b916130d0565b10156128df5760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016102be565b6128e986856123f5565b60008481526015820160209081526040808320898452909152812080548592906129149084906130d0565b90915550506000848152601582016020908152604080832088845290915281208054859290612944908490613132565b909155506129589050868686866000612d2f565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339188916000805160206131e28339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339187916000805160206131e28339815191529181900360a00190a350600195945050505050565b6000612a466109ae565b90506000612a786040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610a03565b60008581526015840160209081526040808320898452909152812054919250612aa086612f03565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190612aea85858585612f23565b90508015612cad576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290612b25908490613132565b90915550506000888152601588016020908152604080832089845290915281208054839290612b559084906130d0565b9091555050600088815260158801602090815260408083208d845290915281208054839290612b85908490613132565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206131e28339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206131e28339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000612ceb6109ae565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b6000612d396109ae565b90506000612d4685612f03565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612da157602002820191906000526020600020905b815481526020019060010190808311612d8d575b5050505050905060005b8151811015612ef8576000828281518110612dc857612dc86130e3565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612dfe89878484612f23565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612e36908490613132565b90915550508b15612e7a5760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612e749084906130d0565b90915550505b8715612ee45760008a8152601b8801602090815260408083208684529091529020548690612ea9908b906130f9565b612eb39190613110565b60008b8152601b89016020908152604080832087845290915281208054909190612ede908490613132565b90915550505b50505080612ef190613145565b9050612dab565b505050505050505050565b600080612f0e6109ae565b60009384526016016020525050604090205490565b600080612f3086856130f9565b905060008515612f4957612f448683613110565b612f4c565b60005b905080841015612f6557612f6084826130d0565b612f68565b60005b979650505050505050565b60405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008060008060808587031215612fec57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561301a57600080fd5b5035919050565b6000806040838503121561303457600080fd5b50508035926020909101359150565b6000815180845260005b818110156130695760208185018101518683018201520161304d565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006130a86080830185613043565b8281036060840152612f688185613043565b634e487b7160e01b600052601160045260246000fd5b81810381811115610229576102296130ba565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610229576102296130ba565b60008261312d57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610229576102296130ba565b600060018201613157576131576130ba565b5060010190565b60008161316d5761316d6130ba565b506000190190565b81815260406020820152600061023b60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b828152816020820152606060408201526000610f4060608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220c641a6aef74c0fc0c5fbf30aa6deac4d54789e23617c82e946df8fed43e31e3e64736f6c63430008110033", + "nonce": "0x98", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2bfb4809138835d58f8dc033de004aab841dbfdbf32d0086123c2421d1c59778", + "transactionType": "CREATE", + "contractName": "NaymsTokenFacet", + "contractAddress": "0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x251df", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50610126806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806318160ddd14603757806370a0823114604f575b600080fd5b603d6094565b60405190815260200160405180910390f35b603d605a36600460c2565b6001600160a01b031660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcf602052604090205490565b600060bd7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcd5490565b905090565b60006020828403121560d357600080fd5b81356001600160a01b038116811460e957600080fd5b939250505056fea2646970667358221220933e33de5f2266d8a1d91e9925c2495e5176d45518c3d3f70b459965df517d3a64736f6c63430008110033", + "nonce": "0x99", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1abb1f61ba05344031110eb18ef39ece504e3f5a05745e8f26fdde9c0002ddce", + "transactionType": "CREATE", + "contractName": "SimplePolicyFacet", + "contractAddress": "0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2cc958", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506127e2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80637d2926051161005b5780637d292605146100fd578063c3ab48cb14610110578063e8b3fb3c14610188578063f3253b5f1461019b57600080fd5b8062bae1731461008c5780630a27162a146100a15780631add96f6146100ca57806323eaabe3146100ea575b600080fd5b61009f61009a366004612416565b6101bc565b005b6100b46100af366004612416565b610205565b6040516100c1919061242f565b60405180910390f35b6100dd6100d8366004612473565b61021b565b6040516100c19190612495565b61009f6100f8366004612416565b610250565b61009f61010b366004612473565b610320565b61012361011e366004612416565b6103c7565b6040516100c191906000610100820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015260a0830151151560a083015260c083015160c083015260e083015160e083015292915050565b61009f610196366004612523565b6104b6565b6101ae6101a9366004612555565b610541565b6040519081526020016100c1565b6000356001600160e01b0319166101d28161055a565b156101f85760405162461bcd60e51b81526004016101ef90612590565b60405180910390fd5b61020182610598565b5050565b606061021082610622565b610100015192915050565b61023f60405180606001604052806000815260200160008152602001606081525090565b61024983836107b5565b9392505050565b610258610c26565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b8152506102a18261029183610c54565b61029a33610c65565b9190610c7a565b610312576102ae33610c65565b8260006102c4826102be33610c65565b90610cd5565b146102e3576102de6102d9856102be33610c65565b610d00565b6102f4565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101ef9493929190612602565b61031b83610d31565b505050565b6000356001600160e01b0319166103368161055a565b156103535760405162461bcd60e51b81526004016101ef90612590565b82604051806040016040528060128152602001715061792053696d706c65205072656d69756d60701b81525061038c8261029183610c54565b610399576102ae33610c65565b60006103a433610c65565b905060006103b182610df3565b90506103be818888610e13565b50505050505050565b6104166040518061010001604052806000815260200160008152602001600080191681526020016000815260200160001515815260200160001515815260200160008152602001600081525090565b60405180610100016040528061042b84610622565b51815260200161043a84610622565b60200151815260200161044c84610622565b60400151815260200161045e84610622565b60600151815260200161047084610622565b608001511515815260200161048484610622565b60a001511515815260200161049884610622565b60c0015181526020016104aa84610622565b60e00151905292915050565b6000356001600160e01b0319166104cc8161055a565b156104e95760405162461bcd60e51b81526004016101ef90612590565b6104f233610fb1565b6040518060400160405280601081526020016f5061792053696d706c6520436c61696d60801b8152506105288261029183610c54565b610535576102ae33610c65565b6103be87878787610fe2565b600061055086868686866112d3565b9695505050505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b60006105a2611344565b60008381526012820160205260409020600481015491925090610100900460ff161580156105d4575080600101544210155b80156105e45750600481015460ff165b1561031b576105f283611368565b60405183907f5ef763899e3efa30fdc82a86b8d4d4a48974ced5248d778d1c4d322160ecfa0190600090a2505050565b61067f60405180610140016040528060008152602001600081526020016000801916815260200160008152602001600015158152602001600015158152602001600081526020016000815260200160608152602001606081525090565b6000610689611344565b60008481526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752969750919592949086019390929083018282801561074c57602002820191906000526020600020905b815481526020019060010190808311610738575b50505050508152602001600882018054806020026020016040519081016040528092919081815260200182805480156107a457602002820191906000526020600020905b815481526020019060010190808311610790575b505050505081525050915050919050565b6107d960405180606001604052806000815260200160008152602001606081525090565b60006107e3611344565b600085815260128201602090815260408083206007018054825181850281018501909352808352949550929390929183018282801561084157602002820191906000526020600020905b81548152602001906001019080831161082d575b5050505050905060008260120160008781526020019081526020016000206008018054806020026020016040519081016040528092919081815260200182805480156108ac57602002820191906000526020600020905b815481526020019060010190808311610898575b5050505050905060008251905060006108c488610df3565b905060006108d3826001611435565b80515190915060006108e58583612649565b6108ef9082612649565b90508067ffffffffffffffff81111561090a5761090a61265c565b60405190808252806020026020018201604052801561096357816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816109285790505b5060408a01526000805b86811015610aa25761271088828151811061098a5761098a612672565b60200260200101518d61099d9190612688565b6109a7919061269f565b91508881815181106109bb576109bb612672565b60200260200101518b6040015182815181106109d9576109d9612672565b602002602001015160200181815250508781815181106109fb576109fb612672565b60200260200101518b604001518281518110610a1957610a19612672565b60200260200101516080018181525050818b604001518281518110610a4057610a40612672565b60200260200101516060018181525050878181518110610a6257610a62612672565b60200260200101518b602001818151610a7b9190612649565b9052508a5182908c90610a8f908390612649565b905250610a9b816126c1565b905061096d565b5060005b83811015610c165761271085602001518281518110610ac757610ac7612672565b602002602001015161ffff168d610ade9190612688565b610ae8919061269f565b915084600001518181518110610b0057610b00612672565b60200260200101518b604001518289610b199190612649565b81518110610b2957610b29612672565b6020026020010151602001818152505084602001518181518110610b4f57610b4f612672565b602002602001015161ffff168b604001518289610b6c9190612649565b81518110610b7c57610b7c612672565b60209081029190910101516080015260408b01518290610b9c838a612649565b81518110610bac57610bac612672565b6020026020010151606001818152505084602001518181518110610bd257610bd2612672565b602002602001015161ffff168b602001818151610bef9190612649565b9052508a5182908c90610c03908390612649565b905250610c0f816126c1565b9050610aa6565b5050505050505050505092915050565b6000610c4f6040518060400160405280600681526020016553797374656d60d01b815250610c54565b905090565b6000610c5f82611661565b92915050565b60601b6bffffffffffffffffffffffff191690565b6000610c8784848461167c565b15610c9457506001610249565b610c9f84848461169e565b15610cac57506001610249565b610cbe84610cb8610c26565b8461169e565b15610ccb57506001610249565b5060009392505050565b600080610ce0611344565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000610d3b611344565b60008381526012820160205260409020600481015491925090610100900460ff1615610da95760405162461bcd60e51b815260206004820152601860248201527f506f6c69637920616c72656164792063616e63656c6c6564000000000000000060448201526064016101ef565b610db283611368565b60048101805461ff00191661010017905560405183907fb9f06c2aafb33d6e7e10925f097be026995386c2e7c3b05f336fe417c1b9c61e90600090a2505050565b600080610dfe611344565b6000938452600a016020525050604090205490565b60008111610e5c5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081c1c995b5a5d5b48185b5bdd5b9d60521b60448201526064016101ef565b6000610e66611344565b6000858152600f8201602052604090205490915060ff16610e9d5760405163e1f8801360e01b8152600481018590526024016101ef565b600083815260108201602052604090205460ff16610ed1576040516307c579f360e21b8152600481018490526024016101ef565b6000610edc84610df3565b60008581526012840160205260409020600481015491925090610100900460ff1615610f405760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101ef565b610f50868383600201548761170e565b50610f5b85856119a2565b83816006016000828254610f6f9190612649565b909155505060405184815285907fd44880514d72bd9d26e63603fa8448ea9bac29c0099e74e0a2c80a3ff4b39d829060200160405180910390a2505050505050565b600080610fbc611344565b90506000610fc984610c65565b6000908152600a90920160205250604090205492915050565b6000610fec611344565b9050600082116110355760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a590818db185a5b48185b5bdd5b9d60621b60448201526064016101ef565b61106f838561106a6040518060400160405280600f81526020016e496e7375726564205061727469657360881b815250610c54565b61169e565b6110b25760405162461bcd60e51b81526020600482015260146024820152736e6f7420616e20696e737572656420706172747960601b60448201526064016101ef565b600084815260128201602052604090206004810154610100900460ff16156111125760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101ef565b60058101546111218185612649565b8260030154101561116b5760405162461bcd60e51b8152602060048201526014602482015273195e18d959591cc81c1bdb1a58de481b1a5b5a5d60621b60448201526064016101ef565b8382600501600082825461117f9190612649565b909155506000905061119087610df3565b6000818152601186016020908152604091829020825160a081018452815481526001820154928101839052600282015493810193909352600381015460608401526004015460ff161515608083015291925090612710906111f19088612688565b6111fb919061269f565b6000838152602787016020908152604080832085518452909152812080549091906112279084906126da565b909155505060208101516127109061123f9088612688565b611249919061269f565b60008381526011870160205260408120600301805490919061126c9084906126da565b9091555061127b905089611c94565b61128b828886600201548961170e565b5086888a7f52cde9fcf4f60d6799679d6944671724549a11ac0b9ee9d4aa17899340472196896040516112c091815260200190565b60405180910390a4505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c081018290526000906105509060e00160405160208183030381529060405280519060200120611d7b565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000611372611344565b9050600061137f83610df3565b600084815260128401602090815260408083208484526011870190925282206001810154600583015460038401549596509294919392612710926113c391906126da565b6113cd9190612688565b6113d7919061269f565b9050808260030160008282546113ed91906126da565b909155505060008481526027860160209081526040808320855484529091528120805483929061141e9084906126da565b90915550505050600401805460ff19169055505050565b60408051808201909152606080825260208201526000611453611344565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156114bd57602002820191906000526020600020905b8154815260200190600101908083116114a9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561153d57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116115045790505b505050919092525050815151919250501580611560575060208101515181515114155b15611659576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156115cd57602002820191906000526020600020905b8154815260200190600101908083116115b9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561164d57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116116145790505b50505050508152505090505b949350505050565b6000815160000361167457506000919050565b506020015190565b60008061168885610df3565b905061169581858561169e565b95945050505050565b6000806116a9611344565b6000868152601f82016020908152604080832088845290915290205490915080158015906116f257506000818152601d83016020908152604080832087845290915290205460ff165b1561170257600192505050610249565b50600095945050505050565b600080611719611344565b600085815260158201602090815260408083208a84529091529020549091508311156117975760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101ef565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916117d1916126da565b10156118455760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101ef565b61184f8685611dc9565b600084815260158201602090815260408083208984529091528120805485929061187a9084906126da565b909155505060008481526015820160209081526040808320888452909152812080548592906118aa908490612649565b909155506118be9050868686866000611e7c565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061278d8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061278d8339815191529181900360a00190a350600195945050505050565b60006119ac611344565b6000848152601282016020908152604080832060070180548251818502810185019093528083529495509293909291830182828015611a0a57602002820191906000526020600020905b8154815260200190600101908083116119f6575b505050505090506000826012016000868152602001908152602001600020600801805480602002602001604051908101604052809291908181526020018280548015611a7557602002820191906000526020600020905b815481526020019060010190808311611a61575b505050505090506000825190506000611a8d87610df3565b6000888152601287016020526040812060020154919250805b84811015611b8057612710868281518110611ac357611ac3612672565b60200260200101518a611ad69190612688565b611ae0919061269f565b9150868181518110611af457611af4612672565b6020026020010151847f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd85856001604051611b42939291909283526020830191909152604082015260600190565b60405180910390a3611b6f84888381518110611b6057611b60612672565b6020026020010151858561170e565b50611b79816126c1565b9050611aa6565b506000611b8e846001611435565b80515190915060005b81811015611c865761271083602001518281518110611bb857611bb8612672565b602002602001015161ffff168c611bcf9190612688565b611bd9919061269f565b93508315611c76578251805182908110611bf557611bf5612672565b6020026020010151867f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd87876001604051611c43939291909283526020830191909152604082015260600190565b60405180910390a3611c748684600001518381518110611c6557611c65612672565b6020026020010151878761170e565b505b611c7f816126c1565b9050611b97565b505050505050505050505050565b6000611c9e611344565b600083815260098201602052604090205490915060ff1615611d1b5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101ef565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000610c5f611d88612050565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000611dd3611344565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015611e2e57602002820191906000526020600020905b815481526020019060010190808311611e1a575b5050505050905060005b8151811015611e7557611e658585848481518110611e5857611e58612672565b6020026020010151612081565b611e6e816126c1565b9050611e38565b5050505050565b6000611e86611344565b90506000611e93856122fe565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015611eee57602002820191906000526020600020905b815481526020019060010190808311611eda575b5050505050905060005b8151811015612045576000828281518110611f1557611f15612672565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090611f4b8987848461231e565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611f83908490612649565b90915550508b15611fc75760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290611fc19084906126da565b90915550505b87156120315760008a8152601b8801602090815260408083208684529091529020548690611ff6908b90612688565b612000919061269f565b60008b8152601b8901602090815260408083208784529091528120805490919061202b908490612649565b90915550505b5050508061203e906126c1565b9050611ef8565b505050505050505050565b60008061205b611344565b9050806001015446146120755761207061236e565b61207b565b80600201545b91505090565b600061208b611344565b905060006120bd6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610c54565b600085815260158401602090815260408083208984529091528120549192506120e5866122fe565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c8552909252822054929350919061212f8585858561231e565b905080156122f2576000898152601c8801602090815260408083208b845282528083208d84529091528120805483929061216a908490612649565b9091555050600088815260158801602090815260408083208984529091528120805483929061219a9084906126da565b9091555050600088815260158801602090815260408083208d8452909152812080548392906121ca908490612649565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061278d8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061278d8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080612309611344565b60009384526016016020525050604090205490565b60008061232b8685612688565b9050600085156123445761233f868361269f565b612347565b60005b9050808410156123605761235b84826126da565b612363565b60005b979650505050505050565b600080612379611344565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f816004016040516123ad91906126ed565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b60006020828403121561242857600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156124675783518352928401929184019160010161244b565b50909695505050505050565b6000806040838503121561248657600080fd5b50508035926020909101359150565b60006020808352608080840185518386015282860151604081818801528088015191506060808189015283835180865260a09550858a019150878501945060005b8181101561251357855180518452898101518a850152858101518685015284810151858501528801518884015294880194918601916001016124d6565b50909a9950505050505050505050565b6000806000806080858703121561253957600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a0868803121561256d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b818110156125e2576020818501810151868301820152016125c6565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061262160808301856125bc565b828103606084015261236381856125bc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c5f57610c5f612633565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610c5f57610c5f612633565b6000826126bc57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016126d3576126d3612633565b5060010190565b81810381811115610c5f57610c5f612633565b600080835481600182811c91508083168061270957607f831692505b6020808410820361272857634e487b7160e01b86526022600452602486fd5b81801561273c57600181146127515761277e565b60ff198616895284151585028901965061277e565b60008a81526020902060005b868110156127765781548b82015290850190830161275d565b505084890196505b50949897505050505050505056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba264697066735822122029aaa5bd1f621f08cf9bd85b6cb5b20baca02657e720f7f914498099eadedb7764736f6c63430008110033", + "nonce": "0x9a", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9ef1b894b371c25376cd287ea07a2b8a8926960479ab9375fac49805fbeb257c", + "transactionType": "CREATE", + "contractName": "SystemFacet", + "contractAddress": "0x217C1d6D6a72925918a644d67dcb0c3760b81E08", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x3184fc", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50612c5d806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200005e5760003560e01c8063524d8dd5146200006357806353733f97146200008f5780637dfcdf2a14620000a8578063cf0ccf9e14620000bf578063cfb5192814620000e9575b600080fd5b6200007a62000074366004620013ae565b6200010f565b60405190151581526020015b60405180910390f35b620000a6620000a0366004620013c8565b62000147565b005b620000a6620000b9366004620013ae565b62000284565b620000d6620000d0366004620013ae565b620003a2565b604051620000869594939291906200145b565b62000100620000fa366004620014c1565b620003c7565b60405190815260200162000086565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604081205460ff165b92915050565b62000151620003d4565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506200019f82620001898362000404565b6001600160601b03193360601b16919062000411565b6200026e576001600160601b03193360601b165b82600062000205826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1462000234576200022e62000228856001600160601b03193360601b16620001ca565b6200047b565b62000245565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016200026594939291906200157c565b60405180910390fd5b6200027c86868686620004ac565b505050505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5460011901620002f85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000265565b60027f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5562000326620003d4565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506200035c82620001898362000404565b62000375576001600160601b03193360601b16620001b3565b62000380836200063e565b505060016200039b60008051602062002c0883398151915290565b6003015550565b6000806060806000620003b586620007d3565b939a9299509097509550909350915050565b6000620001418262000404565b6000620003ff6040518060400160405280600681526020016553797374656d60d01b81525062000404565b905090565b60006200014182620009cd565b600062000420848484620009e9565b156200042f5750600162000474565b6200043c84848462000a2d565b156200044b5750600162000474565b62000461846200045a620003d4565b8462000a2d565b15620004705750600162000474565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008481527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460008051602062002c088339815191529060ff16156200051157604051634fd254f560e11b81526004810186905260240162000265565b6200051c8362000ac0565b62000528858362000d78565b62000534848662000dee565b6000858152600f82016020908152604091829020805460ff191660011790558151808301909252600c82526b22b73a34ba3c9020b236b4b760a11b908201526200058d9085908790620005879062000404565b62000e6e565b606083013515620005e15760405162461bcd60e51b815260206004820152601d60248201527f7574696c697a6564206361706163697479207374617274732061742030000000604482015260640162000265565b600085815260118201602052604090208390620005ff8282620015cb565b505060405184815285907f14944295d1f05c993504e6e25b1bc3eaadd9ace8fcd3fa0b015880dc0cceebcb906020015b60405180910390a25050505050565b60008051602062002c08833981519152620006598262001176565b6200069d5760405162461bcd60e51b81526020600482015260136024820152726d75737420626520746f6b656e697a61626c6560681b604482015260640162000265565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd560205260409020546001600160a01b031615620007235760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c72656164790000000000604482015260640162000265565b6000826040516200073490620013a0565b908152602001604051809103906000f08015801562000757573d6000803e3d6000fd5b506000848152600e84016020908152604080832080546001600160a01b0319166001600160a01b038616908117909155808452602b870183529281902087905551918252919250829185917fa31821b12665c4ed143d0185d4d5bceab4b16f15fad65d427a9f946457876af4910160405180910390a250505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd28352818420547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd390935290832080549193606092839260008051602062002c0883398151915291620008779062001617565b80601f0160208091040260200160405190810160405280929190818152602001828054620008a59062001617565b8015620008f65780601f10620008ca57610100808354040283529160200191620008f6565b820191906000526020600020905b815481529060010190602001808311620008d857829003601f168201915b50505060008a8152600d8501602052604090208054939750926200091d9250905062001617565b80601f01602080910402602001604051908101604052809291908181526020018280546200094b9062001617565b80156200099c5780601f1062000970576101008083540402835291602001916200099c565b820191906000526020600020905b8154815290600101906020018083116200097e57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b60008151600003620009e157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205462000a2481858562000a2d565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602062002c0883398151915290801580159062000aa257506000818152601d83016020908152604080832087845290915290205460ff165b1562000ab45760019250505062000474565b50600095945050505050565b80351562000c6f5762000ad48135620011cc565b62000b225760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640162000265565b806020013560011115801562000b3e5750612710816020013511155b62000b9a5760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840162000265565b62000bac60a082016080830162001653565b158062000bbd575060008160400135115b62000c315760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840162000265565b80604001358160600135111562000c6c5760408051630102498560e11b81526060830135600482015290820135602482015260440162000265565b50565b60208101351562000cc35760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640162000265565b62000cd560a082016080830162001653565b1562000d245760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640162000265565b60408101351562000c6c5760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640162000265565b60008051602062002c0883398151915262000d93836200122f565b6000838152600b8201602090815260408083208590558051868152918201929092529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060015b60405180910390a1505050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320849055805185815291820184905281019190915260008051602062002c08833981519152907f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab59060600162000de1565b60008051602062002c08833981519152600084900362000ec55760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640162000265565b8260000362000f0c5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640162000265565b8160000362000f505760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640162000265565b6000848152601f82016020908152604080832086845290915290205462000f76620003d4565b8414801562000fb2575062000faf6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b81145b801562000fbf5750828114155b156200103457600182602a015411620010275760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840162000265565b602a820180546000190190555b6200103e620003d4565b841480156200107a5750620010776040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b83145b15620010fa576200108b8562001339565b6001600160a01b0316620010c67fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603620010ee57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a0016200062f565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd360205260408120805460008051602062002c088339815191529190620011c29062001617565b1515949350505050565b600060008051602062002c088339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda826200120b8562001339565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604090205460008051602062002c088339815191529060ff1615620012d95760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840162000265565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b60006bffffffffffffffffffffffff821615620013995760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640162000265565b5060601c90565b611594806200167483390190565b600060208284031215620013c157600080fd5b5035919050565b600080600080848603610100811215620013e157600080fd5b853594506020860135935060a0603f1982011215620013ff57600080fd5b50929591945050604083019260e001359150565b6000815180845260005b818110156200143b576020818501810151868301820152016200141d565b506000602082860101526020601f19601f83011685010191505092915050565b85815284602082015260a0604082015260006200147c60a083018662001413565b828103606084015262001490818662001413565b91505060018060a01b03831660808301529695505050505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620014d457600080fd5b813567ffffffffffffffff80821115620014ed57600080fd5b818401915084601f8301126200150257600080fd5b813581811115620015175762001517620014ab565b604051601f8201601f19908116603f01168101908382118183101715620015425762001542620014ab565b816040528281528760208487010111156200155c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b8481528360208201526080604082015260006200159d608083018562001413565b8281036060840152620015b1818562001413565b979650505050505050565b801515811462000c6c57600080fd5b813581556020820135600182015560408201356002820155606082013560038201556004810160808301356200160181620015bc565b815490151560ff1660ff19919091161790555050565b600181811c908216806200162c57607f821691505b6020821081036200164d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200166657600080fd5b81356200047481620015bc56fe6101006040523480156200001257600080fd5b5060405162001594380380620015948339810160408190526200003591620002a0565b3360a081905260405163531657c160e11b81526004810183905263a62caf8290602401602060405180830381865afa15801562000076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009c9190620002ba565b620000ee5760405162461bcd60e51b815260206004820152601360248201527f6d75737420626520746f6b656e697a61626c650000000000000000000000000060448201526064015b60405180910390fd5b60a0516040516310b4955d60e01b8152600481018390526001600160a01b03909116906310b4955d90602401602060405180830381865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e9190620002ba565b15620001ad5760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c726561647900000000006044820152606401620000e5565b60808190524660c052620001c0620001ca565b60e05250620002e5565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620002056080516200026f60201b62000dd71760201c565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b600060208284031215620002b357600080fd5b5051919050565b600060208284031215620002cd57600080fd5b81518015158114620002de57600080fd5b9392505050565b60805160a05160c05160e0516112286200036c60003960006106bd0152600061068d0152600081816102a601528181610384015281816105ea015281816107910152818161089b0152610afd0152600081816102720152818161035b015281816105bd015281816107f00152818161086701528181610ad00152610e3001526112286000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806355b6ed5c11610097578063a457c2d711610066578063a457c2d7146101f1578063a9059cbb14610204578063d505accf14610217578063dd62ed3e1461022c57600080fd5b806355b6ed5c1461018e57806370a08231146101b65780637ecebe00146101c957806395d89b41146101e957600080fd5b806323b872dd116100d357806323b872dd14610151578063313ce567146101645780633644e51514610173578063395093511461017b57600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610263565b60405161010f9190610ee2565b60405180910390f35b61012b610126366004610f2d565b61031f565b604051901515815260200161010f565b61014361034c565b60405190815260200161010f565b61012b61015f366004610f59565b6103fc565b6040516012815260200161010f565b610143610689565b61012b610189366004610f2d565b6106df565b61014361019c366004610f9a565b600060208181529281526040808220909352908152205481565b6101436101c4366004610fd3565b61078d565b6101436101d7366004610fd3565b60016020526000908152604090205481565b610102610858565b61012b6101ff366004610f2d565b610915565b61012b610212366004610f2d565b6109c7565b61022a610225366004610ff7565b610b9a565b005b61014361023a366004610f9a565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205490565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610315919081019061110c565b5095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152902081905560015b92915050565b604051637104788560e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e208f10a90602401602060405180830381865afa1580156103d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f79190611198565b905090565b6000805160206111d383398151915254600090600119016104645760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000805160206111d383398151915255600082900361048457600080fd5b6001600160a01b038416600090815260208181526040808320338452909152902054828110156104ed5760405162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161045b565b60001981146105235761050083826111b1565b6001600160a01b0386166000908152602081815260408083203384529091529020555b60006105398660601b6001600160601b03191690565b905060006105518660601b6001600160601b03191690565b9050856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161059891815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b15801561063657600080fd5b505af115801561064a573d6000803e3d6000fd5b5050505060019350505050600161067e7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600301559392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146106ba576103f7610e08565b507f000000000000000000000000000000000000000000000000000000000000000090565b336000908152602081815260408083206001600160a01b0386168452909152812054829061070f906000196111b1565b101561075d5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015260640161045b565b50336000908152602081815260408083206001600160a01b03861684529091529020805482019055600192915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c9233016107d28460601b6001600160601b03191690565b6040516001600160e01b031960e084901b16815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006024820152604401602060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611198565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261090a919081019061110c565b509095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152812054828110156109955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161045b565b5050336000908152602081815260408083206001600160a01b0386168452909152902080548290039055600192915050565b6000805160206111d38339815191525460009060011901610a2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045b565b60026000805160206111d38339815191525560003360601b6001600160601b03191690506000610a648560601b6001600160601b03191690565b9050846001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610aab91815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506001925050506001610b907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6003015592915050565b42841015610bea5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161045b565b60006001610bf6610689565b6001600160a01b038a81166000818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98183015280840194909452938d166060840152608083018c905260a083015260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610cfd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610d335750876001600160a01b0316816001600160a01b0316145b610d705760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161045b565b6001600160a01b039081166000908152602081815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e547f0000000000000000000000000000000000000000000000000000000000000000610dd7565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60005b83811015610ed9578181015183820152602001610ec1565b50506000910152565b6020815260008251806020840152610f01816040850160208701610ebe565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610f2a57600080fd5b50565b60008060408385031215610f4057600080fd5b8235610f4b81610f15565b946020939093013593505050565b600080600060608486031215610f6e57600080fd5b8335610f7981610f15565b92506020840135610f8981610f15565b929592945050506040919091013590565b60008060408385031215610fad57600080fd5b8235610fb881610f15565b91506020830135610fc881610f15565b809150509250929050565b600060208284031215610fe557600080fd5b8135610ff081610f15565b9392505050565b600080600080600080600060e0888a03121561101257600080fd5b873561101d81610f15565b9650602088013561102d81610f15565b95506040880135945060608801359350608088013560ff8116811461105157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261109557600080fd5b815167ffffffffffffffff808211156110b0576110b061106e565b604051601f8301601f19908116603f011681019082821181831017156110d8576110d861106e565b816040528381528660208588010111156110f157600080fd5b611102846020830160208901610ebe565b9695505050505050565b600080600080600060a0868803121561112457600080fd5b8551945060208601519350604086015167ffffffffffffffff8082111561114a57600080fd5b61115689838a01611084565b9450606088015191508082111561116c57600080fd5b5061117988828901611084565b925050608086015161118a81610f15565b809150509295509295909350565b6000602082840312156111aa57600080fd5b5051919050565b8181038181111561034657634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcaa26469706673582212200c86a8f2175b34cd5b040596caac08bb7bde088ff58d324024bdb9bec75cb61a64736f6c634300081100331ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212201cec633ad6bf584d2e84854a9b1d5363546099de670988e5338f9b26ad8d844264736f6c63430008110033", + "nonce": "0x9b", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x487aeb6492fe4f6c415fb18cdbacba7835a188c3558d0c6a341e096c54909006", + "transactionType": "CREATE", + "contractName": "TokenizedVaultFacet", + "contractAddress": "0x6254eFd84cE152306448E2d10c4dF7DCE6C99765", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x2238af", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50611e40806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aa47d5cb11610071578063aa47d5cb14610121578063ad747f2f14610134578063c978758914610147578063d588b1321461015a578063e208f10a1461016d578063ec7a37701461018057600080fd5b80631ed7db65146100ae57806333f6dfd8146100c35780635c923301146100d65780637baa1dde146100fb578063a6cd857d1461010e575b600080fd5b6100c16100bc366004611b64565b610193565b005b6100c16100d1366004611b96565b6102cf565b6100e96100e4366004611bc2565b610313565b60405190815260200160405180910390f35b6100e9610109366004611bc2565b610328565b6100c161011c366004611b96565b610334565b6100c161012f366004611bc2565b6103ff565b6100c1610142366004611bc2565b61059d565b6100c1610155366004611b96565b6105df565b6100e9610168366004611b96565b61066d565b6100e961017b366004611be4565b610684565b6100c161018e366004611b64565b61068f565b6000356001600160e01b0319166101a9816106e3565b156101cf5760405162461bcd60e51b81526004016101c690611bfd565b60405180910390fd5b60026101d9610721565b600301540361022a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b6002610234610721565b6003015582600061024482610745565b945050505050806001600160a01b0316336001600160a01b0316146102ab5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c7920777261707065722063616c6c7320616c6c6f77656400000000000060448201526064016101c6565b6102b7878787876108d9565b50505060016102c4610721565b600301555050505050565b6000356001600160e01b0319166102e5816106e3565b156103025760405162461bcd60e51b81526004016101c690611bfd565b61030d848484610b6d565b50505050565b600061031f8383610dea565b90505b92915050565b600061031f8383610e14565b6000356001600160e01b03191661034a816106e3565b156103675760405162461bcd60e51b81526004016101c690611bfd565b6002610371610721565b60030154036103c25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b60026103cc610721565b6003015560006103db33610e3f565b90506103e9818686866108d9565b505060016103f5610721565b6003015550505050565b6000356001600160e01b031916610415816106e3565b156104325760405162461bcd60e51b81526004016101c690611bfd565b61043b33610e3f565b6040518060400160405280601881526020017f506179204469766964656e642046726f6d20456e74697479000000000000000081525061048e8261047e83610e70565b61048733610e7b565b9190610e90565b6104ff5761049b33610e7b565b8260006104b1826104ab33610e7b565b90610eeb565b146104d0576104cb6104c6856104ab33610e7b565b610f16565b6104e1565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101c69493929190611c6f565b600061050a33610e3f565b9050600061051782610f47565b519050856105258383610dea565b10156105875760405162461bcd60e51b815260206004820152602b60248201527f7061794469766964656e6446726f6d456e746974793a20696e7375666669636960448201526a656e742062616c616e636560a81b60648201526084016101c6565b610594878384848a610fd2565b50505050505050565b6000356001600160e01b0319166105b3816106e3565b156105d05760405162461bcd60e51b81526004016101c690611bfd565b6105da83836112f6565b505050565b6000356001600160e01b0319166105f5816106e3565b156106125760405162461bcd60e51b81526004016101c690611bfd565b61061a6113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061064d8261047e83610e70565b61065a5761049b33610e7b565b6106658686866113d7565b505050505050565b600061067a848484611602565b90505b9392505050565b60006103228261168c565b6106976113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506106ca8261047e83610e70565b6106d75761049b33610e7b565b610594868686866108d9565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600080606080600080610756610721565b6000888152600a82016020908152604080832054600b8501835281842054600c86019093529220805492995090975091925061079190611ca0565b80601f01602080910402602001604051908101604052809291908181526020018280546107bd90611ca0565b801561080a5780601f106107df5761010080835404028352916020019161080a565b820191906000526020600020905b8154815290600101906020018083116107ed57829003601f168201915b50505060008a8152600d85016020526040902080549397509261082f92509050611ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461085b90611ca0565b80156108a85780601f1061087d576101008083540402835291602001916108a8565b820191906000526020600020905b81548152906001019060200180831161088b57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b6000806108e4610721565b600085815260158201602090815260408083208a84529091529020549091508311156109625760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101c6565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161099c91611cf0565b1015610a105760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101c6565b610a1a86856112f6565b6000848152601582016020908152604080832089845290915281208054859290610a45908490611cf0565b90915550506000848152601582016020908152604080832088845290915281208054859290610a75908490611d03565b90915550610a8990508686868660006116ac565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918891600080516020611deb8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918791600080516020611deb8339815191529181900360a00190a350600195945050505050565b6000610b77610721565b90506000610ba96040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b60008581526015840160209081526040808320898452909152812054919250610bd18661168c565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190610c1b85858585611880565b90508015610dde576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290610c56908490611d03565b90915550506000888152601588016020908152604080832089845290915281208054839290610c86908490611cf0565b9091555050600088815260158801602090815260408083208d845290915281208054839290610cb6908490611d03565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918891600080516020611deb8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c91600080516020611deb8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080610df5610721565b6000938452601501602090815260408085209585529490525050205490565b600080610e1f610721565b600094855260270160209081526040808620948652939052505090205490565b600080610e4a610721565b90506000610e5784610e7b565b6000908152600a90920160205250604090205492915050565b6000610322826118d0565b60601b6bffffffffffffffffffffffff191690565b6000610e9d8484846118eb565b15610eaa5750600161067d565b610eb584848461190d565b15610ec25750600161067d565b610ed484610ece6113a9565b8461190d565b15610ee15750600161067d565b5060009392505050565b600080610ef6610721565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610f7a610721565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600081116110225760405162461bcd60e51b815260206004820152601b60248201527f6469766964656e6420616d6f756e74206d757374206265203e2030000000000060448201526064016101c6565b61102b8261197d565b6110775760405162461bcd60e51b815260206004820181905260248201527f6d75737420626520737570706f72746564206469766964656e6420746f6b656e60448201526064016101c6565b611080856119bd565b156110e05760405162461bcd60e51b815260206004820152602a60248201527f6e6f6e756e69717565206469766964656e6420646973747269627574696f6e2060448201526934b232b73a34b334b2b960b11b60648201526084016101c6565b60006110ea610721565b9050600061111c6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b90506111278561168c565b6000036111405761113a868686866108d9565b5061129a565b61114c868286866108d9565b506000858152601b83016020908152604080832087845290915281208054859290611178908490611d03565b90915550506000858152601983016020908152604080832087845290915290205460ff161580156111c457506000858152601a8301602090815260408083208380529091529020548414155b1561129a576111d16119e0565b600086815260188401602052604090205460ff91909116116112355760405162461bcd60e51b815260206004820152601d60248201527f65786365656473206d6178206469762064656e6f6d696e6174696f6e7300000060448201526064016101c6565b6000858152601883016020818152604080842080546019880184528286208a87528452828620805460ff191660ff9283161790558a8652601a880184528286208254909116865283529084208890559181528154600181018355918352909120018490555b6112a3876119f8565b60408051878152602081018790529081018590526060810184905287907f79c99b7b895cb77cf516bfda80c5416e57f9e3811cd24fa42b139bf7b9ab29679060800160405180910390a250505050505050565b6000611300610721565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561135b57602002820191906000526020600020905b815481526020019060010190808311611347575b5050505050905060005b81518110156113a257611392858584848151811061138557611385611d16565b6020026020010151610b6d565b61139b81611d2c565b9050611365565b5050505050565b60006113d26040518060400160405280600681526020016553797374656d60d01b815250610e70565b905090565b60006113e1610721565b6000848152601582016020908152604080832088845290915290205490915082111561145b5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016101c6565b6000848152602782016020908152604080832086845282528083205460158501835281842088855290925290912054839161149591611cf0565b10156115095760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016101c6565b61151384846112f6565b600083815260168201602052604081208054849290611533908490611cf0565b90915550506000838152601582016020908152604080832087845290915281208054849290611563908490611cf0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916115ac91611d45565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611deb833981519152916115f491889190611d78565b60405180910390a350505050565b60008061160d610721565b600085815260158201602090815260408083208984529091528120549192506116358661168c565b6000878152601b8501602090815260408083208984528252808320548a8452601c880183528184208a855283528184208c8552909252909120549192509061167f84848484611880565b9998505050505050505050565b600080611697610721565b60009384526016016020525050604090205490565b60006116b6610721565b905060006116c38561168c565b600086815260188401602090815260408083208054825181850281018501909352808352949550929390929183018282801561171e57602002820191906000526020600020905b81548152602001906001019080831161170a575b5050505050905060005b815181101561187557600082828151811061174557611745611d16565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061177b89878484611880565b60008b8152601c89016020908152604080832087845282528083208f84529091528120805492935083929091906117b3908490611d03565b90915550508b156117f75760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906117f1908490611cf0565b90915550505b87156118615760008a8152601b8801602090815260408083208684529091529020548690611826908b90611db1565b6118309190611dc8565b60008b8152601b8901602090815260408083208784529091528120805490919061185b908490611d03565b90915550505b5050508061186e90611d2c565b9050611728565b505050505050505050565b60008061188d8685611db1565b9050600085156118a6576118a18683611dc8565b6118a9565b60005b9050808410156118c2576118bd8482611cf0565b6118c5565b60005b979650505050505050565b600081516000036118e357506000919050565b506020015190565b6000806118f785611adf565b905061190481858561190d565b95945050505050565b600080611918610721565b6000868152601f820160209081526040808320888452909152902054909150801580159061196157506000818152601d83016020908152604080832087845290915290205460ff165b156119715760019250505061067d565b50600095945050505050565b600080611988610721565b905080601301600061199985611aff565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000806119c8610721565b60009384526009016020525050604090205460ff1690565b6000806119eb610721565b6017015460ff1692915050565b6000611a02610721565b600083815260098201602052604090205490915060ff1615611a7f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101c6565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b600080611aea610721565b6000938452600a016020525050604090205490565b60006bffffffffffffffffffffffff821615611b5d5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016101c6565b5060601c90565b60008060008060808587031215611b7a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611bab57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611bd557600080fd5b50508035926020909101359150565b600060208284031215611bf657600080fd5b5035919050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b81811015611c4f57602081850181015186830182015201611c33565b506000602082860101526020601f19601f83011685010191505092915050565b848152836020820152608060408201526000611c8e6080830185611c29565b82810360608401526118c58185611c29565b600181811c90821680611cb457607f821691505b602082108103611cd457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032257610322611cda565b8082018082111561032257610322611cda565b634e487b7160e01b600052603260045260246000fd5b600060018201611d3e57611d3e611cda565b5060010190565b81815260406020820152600061031f60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061067a60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b808202811582820484141761032257610322611cda565b600082611de557634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220c76ca0c882bfa45b386f8292617eff197ebaff97f26b05c6dbe13a7b5bbc394c64736f6c63430008110033", + "nonce": "0x9c", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xddff632ab38e431289502ce39590e6d81b930bb582131505717b5e36f76a2922", + "transactionType": "CREATE", + "contractName": "TokenizedVaultIOFacet", + "contractAddress": "0x8fe69c524112F080A15d409f7c68B56248541266", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x1bcfdd", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50611868806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313b747601461003b5780639bda867814610050575b600080fd5b61004e610049366004611548565b610063565b005b61004e61005e36600461158c565b610291565b6000356001600160e01b03191661007981610476565b156100c05760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026100ca6104b4565b600301540361011b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b60026101256104b4565b60030155610132336104d8565b6040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e746974790000008152506101858261017583610509565b61017e3361051a565b919061052f565b6101f6576101923361051a565b8260006101a8826101a23361051a565b9061058b565b146101c7576101c26101bd856101a23361051a565b6105b6565b6101d8565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016100b79493929190611606565b6102466102028761051a565b886102416040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e74697479000000815250610509565b61052f565b61026e57604051635e81202760e01b81526001600160a01b03871660048201526024016100b7565b61027a878787876105e7565b505060016102866104b4565b600301555050505050565b6000356001600160e01b0319166102a781610476565b156102e95760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016100b7565b60026102f36104b4565b60030154036103445760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b600261034e6104b4565b6003015561035b336104d8565b6040518060400160405280601081526020016f115e1d195c9b985b0811195c1bdcda5d60821b8152506103918261017583610509565b61039e576101923361051a565b6103a785610632565b6103f35760405162461bcd60e51b815260206004820152601f60248201527f6578744465706f7369743a20696e76616c696420455243323020746f6b656e0060448201526064016100b7565b60006103fe336104d8565b905061040981610662565b6104555760405162461bcd60e51b815260206004820152601c60248201527f6578744465706f7369743a20696e76616c69642072656365697665720000000060448201526064016100b7565b610460818787610685565b505050600161046d6104b4565b60030155505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806104e36104b4565b905060006104f08461051a565b6000908152600a90920160205250604090205492915050565b6000610514826106fd565b92915050565b60601b6bffffffffffffffffffffffff191690565b600061053c848484610718565b1561054957506001610584565b61055484848461073a565b1561056157506001610584565b6105738461056d6107aa565b8461073a565b1561058057506001610584565b5060005b9392505050565b6000806105966104b4565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b806000036106085760405163959ed6e560e01b815260040160405180910390fd5b60006106138361051a565b90506106208582846107d8565b61062b838584610a03565b5050505050565b60008061063d6104b4565b6001600160a01b03909316600090815260139093016020525050604090205460ff1690565b60008061066d6104b4565b6000938452600f016020525050604090205460ff1690565b806000036106a65760405163806daf1160e01b815260040160405180910390fd5b60006106b18361051a565b905060006106bf8430610ab9565b90506106cd84333086610bda565b60006106d98530610ab9565b905060006106e7838361164d565b90506106f4878583610ca0565b50505050505050565b6000815160000361071057506000919050565b506020015190565b60008061072485610e48565b905061073181858561073a565b95945050505050565b6000806107456104b4565b6000868152601f820160209081526040808320888452909152902054909150801580159061078e57506000818152601d83016020908152604080832087845290915290205460ff165b1561079e57600192505050610584565b50600095945050505050565b60006107d36040518060400160405280600681526020016553797374656d60d01b815250610509565b905090565b60006107e26104b4565b6000848152601582016020908152604080832088845290915290205490915082111561085c5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016100b7565b600084815260278201602090815260408083208684528252808320546015850183528184208885529092529091205483916108969161164d565b101561090a5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016100b7565b6109148484610e68565b60008381526016820160205260408120805484929061093490849061164d565b9091555050600083815260158201602090815260408083208784529091528120805484929061096490849061164d565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916109ad91611660565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f591889190611693565b60405180910390a350505050565b610a0c83610f14565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610a6891906116d4565b6000604051808303816000865af19150503d8060008114610aa5576040519150601f19603f3d011682016040523d82523d6000602084013e610aaa565b606091505b509150915061062b8282610f79565b6000610ac483610f14565b604080516001600160a01b0384811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092839290871691610b1c91906116d4565b6000604051808303816000865af19150503d8060008114610b59576040519150601f19603f3d011682016040523d82523d6000602084013e610b5e565b606091505b50915091508115610b865780806020019051810190610b7d91906116f0565b92505050610514565b60405162461bcd60e51b8152602060048201526024808201527f4c696245524332303a2063616c6c20746f2062616c616e63654f6628292066616044820152631a5b195960e21b60648201526084016100b7565b610be384610f14565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610c4791906116d4565b6000604051808303816000865af19150503d8060008114610c84576040519150601f19603f3d011682016040523d82523d6000602084013e610c89565b606091505b5091509150610c988282610f79565b505050505050565b82600003610cfc5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b60648201526084016100b7565b60008111610d4c5760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e730060448201526064016100b7565b6000610d566104b4565b9050610d676000858585600161106b565b600083815260168201602052604081208054849290610d87908490611709565b90915550506000838152601582016020908152604080832087845290915281208054849290610db7908490611709565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091610e009161171c565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f59188919061174f565b600080610e536104b4565b6000938452600a016020525050604090205490565b6000610e726104b4565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015610ecd57602002820191906000526020600020905b815481526020019060010190808311610eb9575b5050505050905060005b815181101561062b57610f048585848481518110610ef757610ef7611788565b602002602001015161123f565b610f0d8161179e565b9050610ed7565b803b80610f755760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b60648201526084016100b7565b5050565b811561100057805115610f755780806020019051810190610f9a91906117b7565b610f755760405162461bcd60e51b815260206004820152603160248201527f4c696245524332303a207472616e73666572206f72207472616e7366657246726044820152706f6d2072657475726e65642066616c736560781b60648201526084016100b7565b80511561100f57805181602001fd5b60405162461bcd60e51b815260206004820152602b60248201527f4c696245524332303a207472616e73666572206f72207472616e73666572467260448201526a1bdb481c995d995c9d195960aa1b60648201526084016100b7565b60006110756104b4565b90506000611082856114bc565b60008681526018840160209081526040808320805482518185028101850190935280835294955092939092918301828280156110dd57602002820191906000526020600020905b8154815260200190600101908083116110c9575b5050505050905060005b815181101561123457600082828151811061110457611104611788565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061113a898784846114dc565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611172908490611709565b90915550508b156111b65760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906111b090849061164d565b90915550505b87156112205760008a8152601b88016020908152604080832086845290915290205486906111e5908b906117d9565b6111ef91906117f0565b60008b8152601b8901602090815260408083208784529091528120805490919061121a908490611709565b90915550505b5050508061122d9061179e565b90506110e7565b505050505050505050565b60006112496104b4565b9050600061127b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610509565b600085815260158401602090815260408083208984529091528120549192506112a3866114bc565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c855290925282205492935091906112ed858585856114dc565b905080156114b0576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290611328908490611709565b9091555050600088815260158801602090815260408083208984529091528120805483929061135890849061164d565b9091555050600088815260158801602090815260408083208d845290915281208054839290611388908490611709565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206118138339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206118138339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b6000806114c76104b4565b60009384526016016020525050604090205490565b6000806114e986856117d9565b905060008515611502576114fd86836117f0565b611505565b60005b90508084101561151e57611519848261164d565b611521565b60005b979650505050505050565b80356001600160a01b038116811461154357600080fd5b919050565b6000806000806080858703121561155e57600080fd5b8435935061156e6020860161152c565b925061157c6040860161152c565b9396929550929360600135925050565b6000806040838503121561159f57600080fd5b6115a88361152c565b946020939093013593505050565b60005b838110156115d15781810151838201526020016115b9565b50506000910152565b600081518084526115f28160208601602086016115b6565b601f01601f19169290920160200192915050565b84815283602082015260806040820152600061162560808301856115da565b828103606084015261152181856115da565b634e487b7160e01b600052601160045260246000fd5b8181038181111561051457610514611637565b81815260406020820152600061058460408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b949350505050565b600082516116e68184602087016115b6565b9190910192915050565b60006020828403121561170257600080fd5b5051919050565b8082018082111561051457610514611637565b81815260406020820152600061058460408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6000600182016117b0576117b0611637565b5060010190565b6000602082840312156117c957600080fd5b8151801515811461058457600080fd5b808202811582820484141761051457610514611637565b60008261180d57634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220e323c0b7b09bc0df683e4a3f7d17b66ea0ed3195031fa630c20c6f8deedaeafc64736f6c63430008110033", + "nonce": "0x9d", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x97cee138978692be5f50fe8874350c8aba974b0e2695c57141895d9ee0a8f811", + "transactionType": "CREATE", + "contractName": "UserFacet", + "contractAddress": "0x65C37f11879ab9aBAB518457e665C45AaF074DB7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x818d9", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b5061066c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633f1b887f1461005157806353b66f36146100815780639cb481b2146100a2578063afab5f15146100b5575b600080fd5b61006461005f366004610550565b6100ca565b6040516001600160a01b0390911681526020015b60405180910390f35b61009461008f366004610550565b6100db565b604051908152602001610078565b6100946100b0366004610569565b61010e565b6100c86100c3366004610592565b610124565b005b60006100d58261028e565b92915050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546100d5565b60006100d58260601b6001600160601b03191690565b61012c6102f3565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506101768261016183610321565b6001600160601b03193360601b16919061032c565b61022d573360601b6001600160601b0319168260006101cc82845b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b146101f5576101f06101eb856001600160601b03193360601b16610191565b610388565b610206565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161022494939291906105fa565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460ff1661027e5760405163e1f8801360e01b815260048101849052602401610224565b61028884846103b9565b50505050565b60006bffffffffffffffffffffffff8216156102ec5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610224565b5060601c90565b600061031c6040518060400160405280600681526020016553797374656d60d01b815250610321565b905090565b60006100d582610452565b600061033984848461046d565b1561034657506001610381565b6103518484846104af565b1561035e57506001610381565b6103708461036a6102f3565b846104af565b1561037d57506001610381565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020908152604080832084905580518581529182018490528181019290925290517f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7917f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab5919081900360600190a1505050565b6000815160000361046557506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546104a68185856104af565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790801580159061053457506000818152601d83016020908152604080832087845290915290205460ff165b1561054457600192505050610381565b50600095945050505050565b60006020828403121561056257600080fd5b5035919050565b60006020828403121561057b57600080fd5b81356001600160a01b038116811461038157600080fd5b600080604083850312156105a557600080fd5b50508035926020909101359150565b6000815180845260005b818110156105da576020818501810151868301820152016105be565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061061960808301856105b4565b828103606084015261062b81856105b4565b97965050505050505056fea2646970667358221220823108a3a341d14f045fe1e4bcdfbc76d2aac3ba7bf549787e62867e6606e0de64736f6c63430008110033", + "nonce": "0x9e", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x03f421f721386b2c3e6156bb6e4bd3f9d9c7c2a854d955395c34a75971018e2a", + "transactionIndex": "0x3", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x1b95de", + "gasUsed": "0x116c59", + "contractAddress": "0x0538812C252058083Aa2b13d425f11610C404C25", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x8523e34459e7f2063545b739430e5aae7c90d33b3544e1656dfe3ef4545e241e", + "transactionIndex": "0x4", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x3e26a3", + "gasUsed": "0x2290c5", + "contractAddress": "0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0xad2628f9093eecae72c4c70466d82751f30caed30312ac3a5a910686ca2ab336", + "transactionIndex": "0x5", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x89980f", + "gasUsed": "0x4b716c", + "contractAddress": "0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x7281b30ceb6715e3fe8f504fa9c474767c361390969652fc08d6c6ebb479aae0", + "transactionIndex": "0x6", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x915558", + "gasUsed": "0x7bd49", + "contractAddress": "0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0xeedafdb736d3eee4196d2b3b1f5f147c7f4af2b615a28b6a0864032db5aa4337", + "transactionIndex": "0x7", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0xbc82cc", + "gasUsed": "0x2b2d74", + "contractAddress": "0x194A3fDc437b5398E4F334940aBBe278491D1378", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x2bfb4809138835d58f8dc033de004aab841dbfdbf32d0086123c2421d1c59778", + "transactionIndex": "0x8", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0xbe4bb5", + "gasUsed": "0x1c8e9", + "contractAddress": "0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x1abb1f61ba05344031110eb18ef39ece504e3f5a05745e8f26fdde9c0002ddce", + "transactionIndex": "0x9", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0xe0c1b6", + "gasUsed": "0x227601", + "contractAddress": "0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x9ef1b894b371c25376cd287ea07a2b8a8926960479ab9375fac49805fbeb257c", + "transactionIndex": "0xa", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x106dc05", + "gasUsed": "0x261a4f", + "contractAddress": "0x217C1d6D6a72925918a644d67dcb0c3760b81E08", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x487aeb6492fe4f6c415fb18cdbacba7835a188c3558d0c6a341e096c54909006", + "transactionIndex": "0xb", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x12130e8", + "gasUsed": "0x1a54e3", + "contractAddress": "0x6254eFd84cE152306448E2d10c4dF7DCE6C99765", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0xddff632ab38e431289502ce39590e6d81b930bb582131505717b5e36f76a2922", + "transactionIndex": "0xc", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x1369744", + "gasUsed": "0x15665c", + "contractAddress": "0x8fe69c524112F080A15d409f7c68B56248541266", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x97cee138978692be5f50fe8874350c8aba974b0e2695c57141895d9ee0a8f811", + "transactionIndex": "0xd", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x13cd22e", + "gasUsed": "0x63aea", + "contractAddress": "0x65C37f11879ab9aBAB518457e665C45AaF074DB7", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + } + ], + "libraries": [], + "pending": [], + "returns": { + "diamondAddress": { + "internal_type": "address", + "value": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B" + }, + "cut": { + "internal_type": "struct IDiamondCut.FacetCut[]", + "value": "[(0x0538812C252058083Aa2b13d425f11610C404C25, 1, [0x5e1ac8fa, 0x1219dee2, 0xaf76f046, 0x47c07483, 0xd774b4e3, 0xc8422402, 0x7273e796, 0xc1b2bc96, 0x6362aeb4, 0xff3406ce]), (0x0538812C252058083Aa2b13d425f11610C404C25, 0, [0x373df694]), (0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71, 1, [0xce498e84, 0xcb429501, 0xe9f0273c, 0xbdd2620a, 0xeb75c8e8, 0xe6a19df2, 0xa62caf82, 0xa0069289, 0xa246e7a8, 0x34531828, 0xf1ebc810, 0xebc526dc, 0x5c74d6a4, 0x7bf96b68, 0x7f09d085]), (0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788, 1, [0x04e2e500, 0x78e890ba, 0xf17d17f4, 0xedd2133b, 0xa1a2e295, 0x4980f288, 0x10b4955d, 0xa2e4569b, 0x73abdfa5, 0x60f58edf]), (0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A, 1, [0x337781ea, 0x1d510217, 0x22f153db, 0x371d6244]), (0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A, 0, [0xe13b9b14, 0x10a2bbed]), (0x194A3fDc437b5398E4F334940aBBe278491D1378, 1, [0x012ee17b, 0xef706adf, 0x9df00480, 0x4c8198dc, 0x59e148fc, 0x810a374d, 0x4579268a, 0x8d81a1d3]), (0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca, 1, [0x70a08231, 0x18160ddd]), (0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030, 1, [0x1add96f6, 0x23eaabe3, 0x00bae173, 0xf3253b5f, 0xc3ab48cb, 0xe8b3fb3c, 0x7d292605]), (0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030, 0, [0x0a27162a]), (0x217C1d6D6a72925918a644d67dcb0c3760b81E08, 1, [0x53733f97, 0xcf0ccf9e, 0x524d8dd5, 0xcfb51928, 0x7dfcdf2a]), (0x6254eFd84cE152306448E2d10c4dF7DCE6C99765, 1, [0x7baa1dde, 0xd588b132, 0x5c923301, 0xc9787589, 0xe208f10a, 0xec7a3770, 0xa6cd857d, 0xaa47d5cb, 0xad747f2f, 0x33f6dfd8, 0x1ed7db65]), (0x8fe69c524112F080A15d409f7c68B56248541266, 1, [0x9bda8678, 0x13b74760]), (0x65C37f11879ab9aBAB518457e665C45AaF074DB7, 1, [0x3f1b887f, 0x53b66f36, 0x9cb481b2, 0xafab5f15])]" + }, + "initDiamondAddress": { + "internal_type": "address", + "value": "0x0000000000000000000000000000000000000000" + }, + "upgradeHash": { + "internal_type": "bytes32", + "value": "0x5d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf6170" + } + }, + "timestamp": 1697191022, + "chain": 11155111, + "multi": false, + "commit": "13da7ed8" +} \ No newline at end of file diff --git a/broadcast/SmartDeploy.s.sol/11155111/smartDeploy-latest.json b/broadcast/SmartDeploy.s.sol/11155111/smartDeploy-latest.json index c25c2b05..6c42abbc 100644 --- a/broadcast/SmartDeploy.s.sol/11155111/smartDeploy-latest.json +++ b/broadcast/SmartDeploy.s.sol/11155111/smartDeploy-latest.json @@ -1,10 +1,29 @@ { "transactions": [ { - "hash": "0x9e62cacf9e36e9cf89049b8f8dd8eafc9add53d9bfaa7d279625a53caa1eac8d", + "hash": "0x03f421f721386b2c3e6156bb6e4bd3f9d9c7c2a854d955395c34a75971018e2a", + "transactionType": "CREATE", + "contractName": "ACLFacet", + "contractAddress": "0x0538812C252058083Aa2b13d425f11610C404C25", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x16a4d6", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b506113b0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637273e796116100715780637273e79614610132578063af76f04614610145578063c1b2bc9614610158578063c84224021461016b578063d774b4e31461017e578063ff3406ce1461019157600080fd5b80631219dee2146100ae578063373df694146100d657806347c07483146100e95780635e1ac8fa1461010a5780636362aeb41461011f575b600080fd5b6100c16100bc366004610fe3565b6101a4565b60405190151581526020015b60405180910390f35b6100c16100e436600461103d565b6101c5565b6100fc6100f7366004611069565b6101dc565b6040519081526020016100cd565b61011d61011836600461108b565b6101e8565b005b61011d61012d3660046110db565b6102c6565b6100c16101403660046110db565b610392565b6100c16101533660046110db565b61039e565b61011d610166366004611069565b6103aa565b6100c161017936600461108b565b610420565b6100c161018c36600461108b565b610435565b61011d61019f36600461113f565b61044a565b60006101ba8585856101b586610527565b610538565b90505b949350505050565b60006101d2848484610606565b90505b9392505050565b60006101d58383610661565b60006101f33361069d565b90506102048185856101b586610527565b61024e5760405162461bcd60e51b815260206004820152601660248201527506e6f7420696e2061737369676e6572732067726f75760541b60448201526064015b60405180910390fd5b600061025a8585610661565b90508015801590610274575061027282868684610538565b155b156102a257818585610285846106b2565b60405163065708d560e31b8152600401610245949392919061120c565b6102ac85856106e3565b6102bf85856102ba86610527565b610844565b5050505050565b6102ce610afc565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103118261030183610527565b61030a3361069d565b9190610606565b6103825761031e3361069d565b8260006103348261032e3361069d565b90610661565b146103535761034e6103498561032e3361069d565b6106b2565b610364565b604051806020016040528060008152505b83604051630696a9cb60e51b8152600401610245949392919061123b565b61038c8484610b2a565b50505050565b60006101d58383610bf3565b60006101d58383610c64565b60006103b68383610661565b905060006103c33361069d565b90506103d181858585610538565b6104165760405162461bcd60e51b815260206004820152601660248201527506e6f7420696e2061737369676e6572732067726f75760541b6044820152606401610245565b61038c84846106e3565b60006101d2848461043085610527565b610ca6565b60006101d2848461044585610527565b610ce8565b610452610afc565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104858261030183610527565b6104925761031e3361069d565b6104c1846040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610d77565b1561051c5760405162461bcd60e51b815260206004820152602560248201527f73797374656d2061646d696e732067726f7570206973206e6f74206d6f6469666044820152646961626c6560d81b6064820152608401610245565b6102bf858585610dd0565b600061053282610ec0565b92915050565b60008360000361057e5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b6044820152606401610245565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe5602052604090205460008051602061135b833981519152906105c7878683610ce8565b156105d7576001925050506101bd565b6105e9876105e3610afc565b83610ce8565b156105f9576001925050506101bd565b5060009695505050505050565b6000610613848484610ca6565b15610620575060016101d5565b61062b848484610ce8565b15610638575060016101d5565b61064a84610644610afc565b84610ce8565b15610657575060016101d5565b5060009392505050565b60009182527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080842092845291905290205490565b60601b6bffffffffffffffffffffffff191690565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832084845290915290205460008051602061135b83398151915290610734610afc565b8314801561076d575061076a6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b81145b156107a357600182602a0154116107965760405162461bcd60e51b815260040161024590611277565b602a820180546000190190555b6000848152601f8301602090815260408083208684529091529081902054905185917f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9161081e918782526020820152606060408201819052600d908201526c5f756e61737369676e526f6c6560981b608082015260a00190565b60405180910390a2506000928352601f0160209081526040808420928452919052812055565b60008051602061135b83398151915260008490036108985760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b6044820152606401610245565b826000036108dd5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b6044820152606401610245565b8160000361091f5760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b6044820152606401610245565b6000848152601f820160209081526040808320868452909152902054610943610afc565b8414801561097c57506109796040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b81145b80156109885750828114155b156109be57600182602a0154116109b15760405162461bcd60e51b815260040161024590611277565b602a820180546000190190555b6109c6610afc565b841480156109ff57506109fc6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b815250610527565b83145b15610a7a57610a0d85610edb565b6001600160a01b0316610a477fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603610a6e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060818301819052600b908201526a5f61737369676e526f6c6560a81b6080820152905186917f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e919081900360a00190a25050505050565b6000610b256040518060400160405280600681526020016553797374656d60d01b815250610527565b905090565b610b33826112ba565b600003610b53576040516305ccaaf160e41b815260040160405180910390fd5b610b5c816112ba565b600003610b7c57604051630db0d26760e21b815260040160405180910390fd5b60008051602061135b833981519152610b9482610527565b81601e016000610ba386610527565b8152602001908152602001600020819055507f736c56e4bb16c438047d822d53251d5034edf27808ac582857e8863b898c95298383604051610be69291906112e1565b60405180910390a1505050565b600060008051602061135b8339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe482610c2f86610527565b81526020019081526020016000206000610c4885610527565b815260208101919091526040016000205460ff16949350505050565b600060008051602061135b833981519152610c7e83610527565b81601e016000610c8d87610527565b8152602001908152602001600020541491505092915050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054610cdf818585610ce8565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602061135b833981519152908015801590610d5b57506000818152601d83016020908152604080832087845290915290205460ff165b15610d6b576001925050506101d5565b50600095945050505050565b600081604051602001610d8a9190611306565b6040516020818303038152906040528051906020012083604051602001610db19190611306565b6040516020818303038152906040528051906020012014905092915050565b60008051602061135b833981519152610de8846112ba565b600003610e08576040516305ccaaf160e41b815260040160405180910390fd5b610e11836112ba565b600003610e3157604051630db0d26760e21b815260040160405180910390fd5b8181601d016000610e4187610527565b81526020019081526020016000206000610e5a86610527565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6f94e7b578c4524a9c142c004ba6682c061019130e377a6f81d31792a25b7bcc848484604051610eb293929190611322565b60405180910390a150505050565b60008151600003610ed357506000919050565b506020015190565b60006bffffffffffffffffffffffff821615610f395760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610245565b5060601c90565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610f6757600080fd5b813567ffffffffffffffff80821115610f8257610f82610f40565b604051601f8301601f19908116603f01168101908282118183101715610faa57610faa610f40565b81604052838152866020858801011115610fc357600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215610ff957600080fd5b843593506020850135925060408501359150606085013567ffffffffffffffff81111561102557600080fd5b61103187828801610f56565b91505092959194509250565b60008060006060848603121561105257600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561107c57600080fd5b50508035926020909101359150565b6000806000606084860312156110a057600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156110c557600080fd5b6110d186828701610f56565b9150509250925092565b600080604083850312156110ee57600080fd5b823567ffffffffffffffff8082111561110657600080fd5b61111286838701610f56565b9350602085013591508082111561112857600080fd5b5061113585828601610f56565b9150509250929050565b60008060006060848603121561115457600080fd5b833567ffffffffffffffff8082111561116c57600080fd5b61117887838801610f56565b9450602086013591508082111561118e57600080fd5b5061119b86828701610f56565b925050604084013580151581146111b157600080fd5b809150509250925092565b60005b838110156111d75781810151838201526020016111bf565b50506000910152565b600081518084526111f88160208601602086016111bc565b601f01601f19169290920160200192915050565b84815283602082015282604082015260806060820152600061123160808301846111e0565b9695505050505050565b84815283602082015260806040820152600061125a60808301856111e0565b828103606084015261126c81856111e0565b979650505050505050565b60208082526023908201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460408201526236b4b760e91b606082015260800190565b805160208083015191908110156112db576000198160200360031b1b821691505b50919050565b6040815260006112f460408301856111e0565b8281036020840152610cdf81856111e0565b600082516113188184602087016111bc565b9190910192915050565b60608152600061133560608301866111e0565b828103602084015261134781866111e0565b915050821515604083015294935050505056fe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220e21f372d4c766f7f6831a9f8bbdf34d04a474929b32141982e2542379383f28a64736f6c63430008110033", + "nonce": "0x94", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x8523e34459e7f2063545b739430e5aae7c90d33b3544e1656dfe3ef4545e241e", "transactionType": "CREATE", "contractName": "AdminFacet", - "contractAddress": "0xf62a5C1be8425EA1a7D9542c2Ec996E2A71Ec3E3", + "contractAddress": "0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71", "function": null, "arguments": null, "transaction": { @@ -12,18 +31,18 @@ "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", "gas": "0x2cec23", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b506127fe806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063bdd2620a11610097578063e9f0273c11610066578063e9f0273c146101ce578063eb75c8e814610202578063ebc526dc14610218578063f1ebc8101461022b57600080fd5b8063bdd2620a14610180578063cb42950114610195578063ce498e84146101a8578063e6a19df2146101bb57600080fd5b80637f09d085116100d35780637f09d0851461012a578063a00692891461013d578063a246e7a814610165578063a62caf821461016d57600080fd5b806334531828146100fa5780635c74d6a41461010f5780637bf96b6814610122575b600080fd5b61010d61010836600461226f565b61023e565b005b61010d61011d3660046122a8565b610346565b61010d610397565b61010d61013836600461226f565b6103eb565b61015061014b3660046122c5565b61043c565b60405190151581526020015b60405180910390f35b61010d61044d565b61015061017b3660046122c5565b61049d565b6101886104a8565b60405161015c91906122de565b61010d6101a336600461232b565b6104b7565b61010d6101b63660046123a0565b610508565b6101506101c936600461226f565b610568565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde5460405160ff909116815260200161015c565b61020a610597565b60405190815260200161015c565b61010d610226366004612423565b6105a1565b61010d610239366004612447565b6105f2565b61024661064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610289826102798361066f565b6102823361067a565b919061068f565b610338576102963361067a565b8260006102e1826102a63361067a565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b14610300576102fb6102f6856102a63361067a565b6106eb565b610311565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161032f94939291906124b9565b60405180910390fd5b6103418361071c565b505050565b61034e61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610381826102798361066f565b61038e576102963361067a565b610341836107db565b61039f61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103d2826102798361066f565b6103df576102963361067a565b6103e76108c8565b5050565b6103f361064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610426826102798361066f565b610433576102963361067a565b61034183610e6d565b600061044782610f1a565b92915050565b61045561064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610488826102798361066f565b610495576102963361067a565b6103e7610f7a565b600061044782611531565b60606104b2611584565b905090565b6104bf61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104f2826102798361066f565b6104ff576102963361067a565b610341836115f7565b61051061064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610543826102798361066f565b610550576102963361067a565b61055e888888888888611869565b5050505050505050565b6001600160e01b031981166000908152600080516020612789833981519152602052604081205460ff16610447565b60006104b261064a565b6105a961064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506105dc826102798361066f565b6105e9576102963361067a565b61034183611aa4565b6105fa61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061062d826102798361066f565b61063a576102963361067a565b6106448484611b5a565b50505050565b60006104b26040518060400160405280600681526020016553797374656d60d01b8152505b600061044782611c0e565b60601b6bffffffffffffffffffffffff191690565b600061069c848484611c29565b156106a9575060016106e4565b6106b4848484611c6b565b156106c1575060016106e4565b6106d3846106cd61064a565b84611c6b565b156106e0575060016106e4565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff1916600190811790915581518181528083019092529293929091828101908036833701905050905082816000815181106107855761078561250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b054906107ce908390612521565b60405180910390a1505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde546000805160206127a98339815191529060ff908116908316811061087a5760405162461bcd60e51b815260206004820152602e60248201527f5f7570646174654d61784469766964656e6444656e6f6d696e6174696f6e733a60448201526d2063616e6e6f742072656475636560901b606482015260840161032f565b60178201805460ff191660ff85811691821790925560408051928416835260208301919091527fe09b1c2d8d49f7249034d44d8dd27508c3f0a430a2df509300042437a4c46cf591016107ce565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce3805460ff199081169091557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c87188054821690557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e2744939278054821690557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c28054821690557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c8054821690557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe4990878054821690557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec695687228054821690557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a34018054821690557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c8054821690557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec638054821690557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb069998054821690557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e8054821690557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b8280548216905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b1805490921690915560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b81600081518110610b4f57610b4f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b9082906001908110610b8657610b8661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b9082906002908110610bbd57610bbd61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b9082906003908110610bf357610bf361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b9082906004908110610c2a57610c2a61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b9082906005908110610c6157610c6161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b9082906006908110610c9857610c9861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b9082906007908110610ccf57610ccf61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b9082906008908110610d0657610d0661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b9082906009908110610d3d57610d3d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a908110610d7457610d7461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b908110610dab57610dab61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c908110610de157610de161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d908110610e1857610e1861250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d117551490610e61908390612521565b60405180910390a15050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff19169055805160018082528183019092529293929182810190803683370190505090508281600081518110610ed157610ed161250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d1175514906107ce908390612521565b60006000805160206127a98339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda82610f5685611cfa565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce38054600160ff1991821681179092557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c871880548216831790557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e27449392780548216831790557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c280548216831790557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c80548216831790557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe49908780548216831790557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec6956872280548216831790557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a340180548216831790557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c80548216831790557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec6380548216831790557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb0699980548216831790557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e80548216831790557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b82805482168317905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b18054909216909217905560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b8160008151811061121f5761121f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b90829060019081106112565761125661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b908290600290811061128d5761128d61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b90829060039081106112c3576112c361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b90829060049081106112fa576112fa61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b90829060059081106113315761133161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b90829060069081106113685761136861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b908290600790811061139f5761139f61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b90829060089081106113d6576113d661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b908290600990811061140d5761140d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a9081106114445761144461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b90811061147b5761147b61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c9081106114b1576114b161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d9081106114e8576114e861250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b05490610e61908390612521565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd36020526040812080546000805160206127a9833981519152919061157a90612563565b1515949350505050565b606060006000805160206127a9833981519152601481018054604080516020808402820181019092528281529394508301828280156115ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115ce575b505050505091505090565b601261160282611d5f565b60ff16111561162457604051630f4051bd60e11b815260040160405180910390fd5b6001600160a01b03811660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda60205260409020546000805160206127a98339815191529060ff16156116bc5760405162461bcd60e51b815260206004820152601c60248201527f65787465726e616c20746f6b656e20616c726561647920616464656400000000604482015260640161032f565b6001600160a01b0382166000908152602b820160205260409020541561173f5760405162461bcd60e51b815260206004820152603260248201527f63616e6e6f74206164642070617274696369706174696f6e20746f6b656e20776044820152711c985c1c195c88185cc8195e1d195c9b985b60721b606482015260840161032f565b600061174a83611e6a565b905061175581611f6b565b6117a15760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161032f565b6001600160a01b03831660009081526013830160205260408120805460ff191660011790556117cf8461067a565b90506117da81611fc8565b601483018054600181018255600091825260209091200180546001600160a01b0319166001600160a01b0386161790556040518190602c85019061181f90859061259d565b908152604051908190036020018120919091556001600160a01b038516907fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d790600090a250505050565b6000805160206127a98339815191528184146118d35760405162461bcd60e51b815260206004820152602360248201527f72656365697665727320616e6420626173697320706f696e7473206d69736d616044820152620e8c6d60eb1b606482015260840161032f565b6000878152602d8201602090815260408083208984529091528120906118f98282612129565b61190760018301600061214a565b5050604080516060602087028083018201845292820187815260009383928a918a91829190860190849080828437600092019190915250505090825250604080516020878102828101820190935287825292830192909188918891829185019084908082843760009201829052509390945250508251519293509050805b828110156119cc57836020015181815181106119a3576119a361250b565b602002602001015161ffff16826119ba91906125cf565b91506119c5816125e2565b9050611985565b506119da60026127106125fb565b811115611a1157806119ef60026127106125fb565b6040516309281e0960e01b81526004810192909252602482015260440161032f565b60008a8152602d8501602090815260408083208c84528252909120845180518693611a4092849291019061216f565b506020828101518051611a5992600185019201906121ba565b509050507f8e22c2013153bfc59463ca08bb8cb31dd13119bf9ce2eee71d7a13069b50fc408a8a85604051611a909392919061261d565b60405180910390a150505050505050505050565b6000805160206127a9833981519152611ac060026127106125fb565b8261ffff161115611afe5781611ad960026127106125fb565b6040516309281e0960e01b815261ffff9092166004830152602482015260440161032f565b60268101805469ffff000000000000000019166801000000000000000061ffff8516908102919091179091556040519081527f92a4a904f938dda530a8218ca590b5c9fba2153905fd0396f1bff1dd499a543f90602001610e61565b81611ba75760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f742072656d6f76652064656661756c742066656573000000000000604482015260640161032f565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff46020908152604080832084845290915281206000805160206127a983398151915291611bf98282612129565b611c0760018301600061214a565b5050505050565b60008151600003611c2157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054611c62818585611c6b565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206127a9833981519152908015801590611cde57506000818152601d83016020908152604080832087845290915290205460ff165b15611cee576001925050506106e4565b50600095945050505050565b60006bffffffffffffffffffffffff821615611d585760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161032f565b5060601c90565b6000611d6a826120c8565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b03861691611dad9161259d565b6000604051808303816000865af19150503d8060008114611dea576040519150601f19603f3d011682016040523d82523d6000602084013e611def565b606091505b50915091508115611e165780806020019051810190611e0e91906126c9565b949350505050565b60405162461bcd60e51b815260206004820152602360248201527f4c696245524332303a2063616c6c20746f20646563696d616c732829206661696044820152621b195960ea1b606482015260840161032f565b6060611e75826120c8565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160009182916001600160a01b03861691611eb89161259d565b6000604051808303816000865af19150503d8060008114611ef5576040519150601f19603f3d011682016040523d82523d6000602084013e611efa565b606091505b50915091508115611f195780806020019051810190611e0e91906126e6565b60405162461bcd60e51b815260206004820152602160248201527f4c696245524332303a2063616c6c20746f2073796d626f6c2829206661696c656044820152601960fa1b606482015260840161032f565b6040516000906000805160206127a98339815191529082907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff390611fb090869061259d565b90815260200160405180910390205414915050919050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd060205260409020546000805160206127a98339815191529060ff161561206f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161032f565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b90606001610e61565b803b806103e75760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b606482015260840161032f565b5080546000825590600052602060002090810190612147919061225a565b50565b50805460008255600f016010900490600052602060002090810190612147919061225a565b8280548282559060005260206000209081019282156121aa579160200282015b828111156121aa57825182559160200191906001019061218f565b506121b692915061225a565b5090565b82805482825590600052602060002090600f016010900481019282156121aa5791602002820160005b8382111561222357835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026121e3565b80156122515782816101000a81549061ffff0219169055600201602081600101049283019260010302612223565b50506121b69291505b5b808211156121b6576000815560010161225b565b60006020828403121561228157600080fd5b81356001600160e01b0319811681146106e457600080fd5b60ff8116811461214757600080fd5b6000602082840312156122ba57600080fd5b81356106e481612299565b6000602082840312156122d757600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160a01b0316835292840192918401916001016122fa565b50909695505050505050565b60006020828403121561233d57600080fd5b81356001600160a01b03811681146106e457600080fd5b60008083601f84011261236657600080fd5b50813567ffffffffffffffff81111561237e57600080fd5b6020830191508360208260051b850101111561239957600080fd5b9250929050565b600080600080600080608087890312156123b957600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156123df57600080fd5b6123eb8a838b01612354565b9096509450606089013591508082111561240457600080fd5b5061241189828a01612354565b979a9699509497509295939492505050565b60006020828403121561243557600080fd5b813561ffff811681146106e457600080fd5b6000806040838503121561245a57600080fd5b50508035926020909101359150565b60005b8381101561248457818101518382015260200161246c565b50506000910152565b600081518084526124a5816020860160208601612469565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006124d8608083018561248d565b82810360608401526124ea818561248d565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160e01b0319168352928401929184019160010161253d565b600181811c9082168061257757607f821691505b60208210810361259757634e487b7160e01b600052602260045260246000fd5b50919050565b600082516125af818460208701612469565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610447576104476125b9565b6000600182016125f4576125f46125b9565b5060010190565b60008261261857634e487b7160e01b600052601260045260246000fd5b500490565b8381526000602084818401526060604084015260a0830184516040606086015281815180845260c0870191508483019350600092505b808310156126735783518252928401926001929092019190840190612653565b5086840151868203605f190160808801528051808352908501935090840191506000905b808210156126bb57835161ffff168352928401929184019160019190910190612697565b509098975050505050505050565b6000602082840312156126db57600080fd5b81516106e481612299565b6000602082840312156126f857600080fd5b815167ffffffffffffffff8082111561271057600080fd5b818401915084601f83011261272457600080fd5b815181811115612736576127366124f5565b604051601f8201601f19908116603f0116810190838211818310171561275e5761275e6124f5565b8160405282815287602084870101111561277757600080fd5b6124ea83602083016020880161246956fe47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a260501ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220f20879ebcf331d0cf2c6078ffc126ce980315af4884cd40687b7ea399412ad4764736f6c63430008110033", - "nonce": "0x8b", + "data": "0x608060405234801561001057600080fd5b506127fe806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063bdd2620a11610097578063e9f0273c11610066578063e9f0273c146101ce578063eb75c8e814610202578063ebc526dc14610218578063f1ebc8101461022b57600080fd5b8063bdd2620a14610180578063cb42950114610195578063ce498e84146101a8578063e6a19df2146101bb57600080fd5b80637f09d085116100d35780637f09d0851461012a578063a00692891461013d578063a246e7a814610165578063a62caf821461016d57600080fd5b806334531828146100fa5780635c74d6a41461010f5780637bf96b6814610122575b600080fd5b61010d61010836600461226f565b61023e565b005b61010d61011d3660046122a8565b610346565b61010d610397565b61010d61013836600461226f565b6103eb565b61015061014b3660046122c5565b61043c565b60405190151581526020015b60405180910390f35b61010d61044d565b61015061017b3660046122c5565b61049d565b6101886104a8565b60405161015c91906122de565b61010d6101a336600461232b565b6104b7565b61010d6101b63660046123a0565b610508565b6101506101c936600461226f565b610568565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde5460405160ff909116815260200161015c565b61020a610597565b60405190815260200161015c565b61010d610226366004612423565b6105a1565b61010d610239366004612447565b6105f2565b61024661064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610289826102798361066f565b6102823361067a565b919061068f565b610338576102963361067a565b8260006102e1826102a63361067a565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b14610300576102fb6102f6856102a63361067a565b6106eb565b610311565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161032f94939291906124b9565b60405180910390fd5b6103418361071c565b505050565b61034e61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610381826102798361066f565b61038e576102963361067a565b610341836107db565b61039f61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103d2826102798361066f565b6103df576102963361067a565b6103e76108c8565b5050565b6103f361064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610426826102798361066f565b610433576102963361067a565b61034183610e6d565b600061044782610f1a565b92915050565b61045561064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610488826102798361066f565b610495576102963361067a565b6103e7610f7a565b600061044782611531565b60606104b2611584565b905090565b6104bf61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506104f2826102798361066f565b6104ff576102963361067a565b610341836115f7565b61051061064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b815250610543826102798361066f565b610550576102963361067a565b61055e888888888888611869565b5050505050505050565b6001600160e01b031981166000908152600080516020612789833981519152602052604081205460ff16610447565b60006104b261064a565b6105a961064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506105dc826102798361066f565b6105e9576102963361067a565b61034183611aa4565b6105fa61064a565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061062d826102798361066f565b61063a576102963361067a565b6106448484611b5a565b50505050565b60006104b26040518060400160405280600681526020016553797374656d60d01b8152505b600061044782611c0e565b60601b6bffffffffffffffffffffffff191690565b600061069c848484611c29565b156106a9575060016106e4565b6106b4848484611c6b565b156106c1575060016106e4565b6106d3846106cd61064a565b84611c6b565b156106e0575060016106e4565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff1916600190811790915581518181528083019092529293929091828101908036833701905050905082816000815181106107855761078561250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b054906107ce908390612521565b60405180910390a1505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfde546000805160206127a98339815191529060ff908116908316811061087a5760405162461bcd60e51b815260206004820152602e60248201527f5f7570646174654d61784469766964656e6444656e6f6d696e6174696f6e733a60448201526d2063616e6e6f742072656475636560901b606482015260840161032f565b60178201805460ff191660ff85811691821790925560408051928416835260208301919091527fe09b1c2d8d49f7249034d44d8dd27508c3f0a430a2df509300042437a4c46cf591016107ce565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce3805460ff199081169091557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c87188054821690557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e2744939278054821690557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c28054821690557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c8054821690557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe4990878054821690557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec695687228054821690557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a34018054821690557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c8054821690557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec638054821690557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb069998054821690557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e8054821690557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b8280548216905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b1805490921690915560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b81600081518110610b4f57610b4f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b9082906001908110610b8657610b8661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b9082906002908110610bbd57610bbd61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b9082906003908110610bf357610bf361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b9082906004908110610c2a57610c2a61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b9082906005908110610c6157610c6161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b9082906006908110610c9857610c9861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b9082906007908110610ccf57610ccf61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b9082906008908110610d0657610d0661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b9082906009908110610d3d57610d3d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a908110610d7457610d7461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b908110610dab57610dab61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c908110610de157610de161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d908110610e1857610e1861250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d117551490610e61908390612521565b60405180910390a15050565b6001600160e01b03198116600090815260008051602061278983398151915260208181526040808420805460ff19169055805160018082528183019092529293929182810190803683370190505090508281600081518110610ed157610ed161250b565b6001600160e01b0319909216602092830291909101909101526040517f79393d1dee0368744b2a251825e94ffdd643836b09c4074dc436a989d1175514906107ce908390612521565b60006000805160206127a98339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda82610f5685611cfa565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008051602061278983398151915260208181527f1743a135ce53c05672f6ed0c770fed28c8645c3ce3ac33c9562c0f83f5791ce38054600160ff1991821681179092557fb0d7946bab2bcff712b0b8060e6339d4cd57d81112f27585f6a9c9f4c82c871880548216831790557f968f13724f2e05c1c6a36dba7f63d223a09c2392af2c888997c7e1e27449392780548216831790557fea11e08356013ee1b3687be68562968754c11bc893be36e9dcae00d20c17b9c280548216831790557f2ad254b5adf80a1139bb642a638337f98a7bc4dbea8c884c8adfa6f214db675c80548216831790557f38a8780df60d8c75479a519ad6d31e7fb3c7cc4c789a838dbd5e023dbe49908780548216831790557f1772caca7923025e0b39f6119286eed961d96ec0945382d8888b6aec6956872280548216831790557f2606e17099b55db6612fd5f37660368e2e72ddb19e5e0a2c291fbbf79b7a340180548216831790557f14acd49b0e3c7019614cfd8d410ac1d86dec14e7f2f17198a207c5fae23bd98c80548216831790557fd229f64f1d380ed8f77666b09e3e50b2fe8b17965c430a6e2c46b70a5dc1ec6380548216831790557ffe06b9dea9bf231645737f742acbe25d8178941a75627a5987c1ecc01bb0699980548216831790557f3fc186aee25899ae67e4d09af14fb24d828c543a090ada4762a6cb020525ea6e80548216831790557f2d0cb9185fbe0b5f22677cc33f448d64d5da3d73260ba0eb87136c11baef8b82805482168317905563137b50cf60e31b60009081527fb683c65cbc6f7f7e4c663d24b2c53ab0e52136440fe2489b84d61963ffeea6b18054909216909217905560408051600e8082526101e08201909252919282016101c08036833701905050905063a2e4569b60e01b8160008151811061121f5761121f61250b565b6001600160e01b0319909216602092830291909101909101528051633a2cfecf60e21b90829060019081106112565761125661250b565b6001600160e01b0319909216602092830291909101909101528051637d29260560e01b908290600290811061128d5761128d61250b565b6001600160e01b031990921660209283029190910190910152805162bae17360e01b90829060039081106112c3576112c361250b565b6001600160e01b031990921660209283029190910190910152805163ef706adf60e01b90829060049081106112fa576112fa61250b565b6001600160e01b031990921660209283029190910190910152805163013be00960e71b90829060059081106113315761133161250b565b6001600160e01b031990921660209283029190910190910152805163a6cd857d60e01b90829060069081106113685761136861250b565b6001600160e01b031990921660209283029190910190910152805163aa47d5cb60e01b908290600790811061139f5761139f61250b565b6001600160e01b031990921660209283029190910190910152805163c978758960e01b90829060089081106113d6576113d661250b565b6001600160e01b0319909216602092830291909101909101528051631ed7db6560e01b908290600990811061140d5761140d61250b565b6001600160e01b031990921660209283029190910190910152805163067edbfb60e31b908290600a9081106114445761144461250b565b6001600160e01b031990921660209283029190910190910152805163ad747f2f60e01b908290600b90811061147b5761147b61250b565b6001600160e01b0319909216602092830291909101909101528051629dba3b60e51b908290600c9081106114b1576114b161250b565b6001600160e01b031990921660209283029190910190910152805163137b50cf60e31b908290600d9081106114e8576114e861250b565b6001600160e01b0319909216602092830291909101909101526040517f1e02b6835506864ec2cb8a3ed28211eb5f3a59f5e01b27a38237e67175e8b05490610e61908390612521565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd36020526040812080546000805160206127a9833981519152919061157a90612563565b1515949350505050565b606060006000805160206127a9833981519152601481018054604080516020808402820181019092528281529394508301828280156115ec57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115ce575b505050505091505090565b601261160282611d5f565b60ff16111561162457604051630f4051bd60e11b815260040160405180910390fd5b6001600160a01b03811660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda60205260409020546000805160206127a98339815191529060ff16156116bc5760405162461bcd60e51b815260206004820152601c60248201527f65787465726e616c20746f6b656e20616c726561647920616464656400000000604482015260640161032f565b6001600160a01b0382166000908152602b820160205260409020541561173f5760405162461bcd60e51b815260206004820152603260248201527f63616e6e6f74206164642070617274696369706174696f6e20746f6b656e20776044820152711c985c1c195c88185cc8195e1d195c9b985b60721b606482015260840161032f565b600061174a83611e6a565b905061175581611f6b565b6117a15760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161032f565b6001600160a01b03831660009081526013830160205260408120805460ff191660011790556117cf8461067a565b90506117da81611fc8565b601483018054600181018255600091825260209091200180546001600160a01b0319166001600160a01b0386161790556040518190602c85019061181f90859061259d565b908152604051908190036020018120919091556001600160a01b038516907fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d790600090a250505050565b6000805160206127a98339815191528184146118d35760405162461bcd60e51b815260206004820152602360248201527f72656365697665727320616e6420626173697320706f696e7473206d69736d616044820152620e8c6d60eb1b606482015260840161032f565b6000878152602d8201602090815260408083208984529091528120906118f98282612129565b61190760018301600061214a565b5050604080516060602087028083018201845292820187815260009383928a918a91829190860190849080828437600092019190915250505090825250604080516020878102828101820190935287825292830192909188918891829185019084908082843760009201829052509390945250508251519293509050805b828110156119cc57836020015181815181106119a3576119a361250b565b602002602001015161ffff16826119ba91906125cf565b91506119c5816125e2565b9050611985565b506119da60026127106125fb565b811115611a1157806119ef60026127106125fb565b6040516309281e0960e01b81526004810192909252602482015260440161032f565b60008a8152602d8501602090815260408083208c84528252909120845180518693611a4092849291019061216f565b506020828101518051611a5992600185019201906121ba565b509050507f8e22c2013153bfc59463ca08bb8cb31dd13119bf9ce2eee71d7a13069b50fc408a8a85604051611a909392919061261d565b60405180910390a150505050505050505050565b6000805160206127a9833981519152611ac060026127106125fb565b8261ffff161115611afe5781611ad960026127106125fb565b6040516309281e0960e01b815261ffff9092166004830152602482015260440161032f565b60268101805469ffff000000000000000019166801000000000000000061ffff8516908102919091179091556040519081527f92a4a904f938dda530a8218ca590b5c9fba2153905fd0396f1bff1dd499a543f90602001610e61565b81611ba75760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f742072656d6f76652064656661756c742066656573000000000000604482015260640161032f565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff46020908152604080832084845290915281206000805160206127a983398151915291611bf98282612129565b611c0760018301600061214a565b5050505050565b60008151600003611c2157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020526040812054611c62818585611c6b565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206127a9833981519152908015801590611cde57506000818152601d83016020908152604080832087845290915290205460ff165b15611cee576001925050506106e4565b50600095945050505050565b60006bffffffffffffffffffffffff821615611d585760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161032f565b5060601c90565b6000611d6a826120c8565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916001600160a01b03861691611dad9161259d565b6000604051808303816000865af19150503d8060008114611dea576040519150601f19603f3d011682016040523d82523d6000602084013e611def565b606091505b50915091508115611e165780806020019051810190611e0e91906126c9565b949350505050565b60405162461bcd60e51b815260206004820152602360248201527f4c696245524332303a2063616c6c20746f20646563696d616c732829206661696044820152621b195960ea1b606482015260840161032f565b6060611e75826120c8565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160009182916001600160a01b03861691611eb89161259d565b6000604051808303816000865af19150503d8060008114611ef5576040519150601f19603f3d011682016040523d82523d6000602084013e611efa565b606091505b50915091508115611f195780806020019051810190611e0e91906126e6565b60405162461bcd60e51b815260206004820152602160248201527f4c696245524332303a2063616c6c20746f2073796d626f6c2829206661696c656044820152601960fa1b606482015260840161032f565b6040516000906000805160206127a98339815191529082907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff390611fb090869061259d565b90815260200160405180910390205414915050919050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd060205260409020546000805160206127a98339815191529060ff161561206f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161032f565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b90606001610e61565b803b806103e75760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b606482015260840161032f565b5080546000825590600052602060002090810190612147919061225a565b50565b50805460008255600f016010900490600052602060002090810190612147919061225a565b8280548282559060005260206000209081019282156121aa579160200282015b828111156121aa57825182559160200191906001019061218f565b506121b692915061225a565b5090565b82805482825590600052602060002090600f016010900481019282156121aa5791602002820160005b8382111561222357835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026121e3565b80156122515782816101000a81549061ffff0219169055600201602081600101049283019260010302612223565b50506121b69291505b5b808211156121b6576000815560010161225b565b60006020828403121561228157600080fd5b81356001600160e01b0319811681146106e457600080fd5b60ff8116811461214757600080fd5b6000602082840312156122ba57600080fd5b81356106e481612299565b6000602082840312156122d757600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160a01b0316835292840192918401916001016122fa565b50909695505050505050565b60006020828403121561233d57600080fd5b81356001600160a01b03811681146106e457600080fd5b60008083601f84011261236657600080fd5b50813567ffffffffffffffff81111561237e57600080fd5b6020830191508360208260051b850101111561239957600080fd5b9250929050565b600080600080600080608087890312156123b957600080fd5b8635955060208701359450604087013567ffffffffffffffff808211156123df57600080fd5b6123eb8a838b01612354565b9096509450606089013591508082111561240457600080fd5b5061241189828a01612354565b979a9699509497509295939492505050565b60006020828403121561243557600080fd5b813561ffff811681146106e457600080fd5b6000806040838503121561245a57600080fd5b50508035926020909101359150565b60005b8381101561248457818101518382015260200161246c565b50506000910152565b600081518084526124a5816020860160208601612469565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006124d8608083018561248d565b82810360608401526124ea818561248d565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561231f5783516001600160e01b0319168352928401929184019160010161253d565b600181811c9082168061257757607f821691505b60208210810361259757634e487b7160e01b600052602260045260246000fd5b50919050565b600082516125af818460208701612469565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610447576104476125b9565b6000600182016125f4576125f46125b9565b5060010190565b60008261261857634e487b7160e01b600052601260045260246000fd5b500490565b8381526000602084818401526060604084015260a0830184516040606086015281815180845260c0870191508483019350600092505b808310156126735783518252928401926001929092019190840190612653565b5086840151868203605f190160808801528051808352908501935090840191506000905b808210156126bb57835161ffff168352928401929184019160019190910190612697565b509098975050505050505050565b6000602082840312156126db57600080fd5b81516106e481612299565b6000602082840312156126f857600080fd5b815167ffffffffffffffff8082111561271057600080fd5b818401915084601f83011261272457600080fd5b815181811115612736576127366124f5565b604051601f8201601f19908116603f0116810190838211818310171561275e5761275e6124f5565b8160405282815287602084870101111561277757600080fd5b6124ea83602083016020880161246956fe47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a260501ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a2646970667358221220c7fb0907563c4f62f833d928a1960a1a5277c1fdafc44ccc2434459e31d322de64736f6c63430008110033", + "nonce": "0x95", "accessList": [] }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x487d19010753de947a3355fb8937b7e011b248377bee6829d2d7b8ec2211d065", + "hash": "0xad2628f9093eecae72c4c70466d82751f30caed30312ac3a5a910686ca2ab336", "transactionType": "CREATE", "contractName": "EntityFacet", - "contractAddress": "0x299244282a8cB0216283913a4732cea1bdEcF392", + "contractAddress": "0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788", "function": null, "arguments": null, "transaction": { @@ -31,18 +50,37 @@ "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", "gas": "0x620c3f", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b5061587480620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806378e890ba1161006657806378e890ba14610127578063a1a2e2951461012f578063a2e4569b1461014f578063edd2133b14610162578063f17d17f4146101b957600080fd5b806304e2e500146100a357806310b4955d146100b85780634980f288146100e057806360f58edf1461010157806373abdfa514610114575b600080fd5b6100b66100b1366004614d6c565b6101cc565b005b6100cb6100c6366004614df9565b610308565b60405190151581526020015b60405180910390f35b6100f36100ee366004614df9565b610319565b6040519081526020016100d7565b6100b661010f366004614eb5565b610324565b6100b6610122366004614f22565b610380565b6100f36103da565b61014261013d366004614f5a565b6103e9565b6040516100d79190614f7c565b6100b661015d366004615015565b61040e565b610175610170366004614df9565b61056c565b6040516100d79190600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b6100b66101c7366004614eb5565b6105a0565b6101d46105f5565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b81525061021d8261020d8361061a565b61021633610625565b919061063a565b6102975761022a33610625565b8260006102408261023a33610625565b90610695565b1461025f5761025a6102558561023a33610625565b6106c0565b610270565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161028e9493929190615091565b60405180910390fd5b856102a1816106f1565b608001516102f15760405162461bcd60e51b815260206004820152601f60248201527f73696d706c6520706f6c696379206372656174696f6e2064697361626c656400604482015260640161028e565b6102fe888888888861077c565b5050505050505050565b600061031382610cb3565b92915050565b600061031382610cde565b61032c6105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103618261020d8361061a565b61036e5761022a33610625565b610379858585610d2c565b5050505050565b6103886105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103bd8261020d8361061a565b6103ca5761022a33610625565b6103d48484610f35565b50505050565b60006103e4611225565b905090565b60408051808201909152606080825260208201526104078383611256565b9392505050565b6000356001600160e01b03191661045d816001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b1561049f5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604482015260640161028e565b60026104a9611482565b60030154036104fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028e565b6002610504611482565b6003015560408051808201909152601081526f537461727420546f6b656e2053616c6560801b6020820152849061053e8261020d8361061a565b61054b5761022a33610625565b6105568686866114a6565b50506001610562611482565b6003015550505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152610313826106f1565b6105a86105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506105dd8261020d8361061a565b6105ea5761022a33610625565b610379858585611689565b60006103e46040518060400160405280600681526020016553797374656d60d01b8152505b6000610313826118df565b60601b6bffffffffffffffffffffffff191690565b60006106478484846118fa565b1561065457506001610407565b61065f84848461191c565b1561066c57506001610407565b61067e846106786105f5565b8461191c565b1561068b57506001610407565b5060009392505050565b6000806106a0611482565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610724611482565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600085900361079e5760405163083191a360e41b815260040160405180910390fd5b60006107a8611482565b6000868152600f8201602052604090205490915060ff166107df5760405163e1f8801360e01b81526004810186905260240161028e565b6107ec60408501856150c2565b90506107fb60208601866150c2565b90501461084a5760405162461bcd60e51b815260206004820152601e60248201527f696e636f7272656374206e756d626572206f66207369676e6174757265730000604482015260640161028e565b6000868152601282016020526040902083906108668282615288565b505060008681526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752610995968c96949594938601939092919083018282801561092e57602002820191906000526020600020905b81548152602001906001019080831161091a575b505050505081526020016008820180548060200260200160405190810160405280929190818152602001828054801561098657602002820191906000526020600020905b815481526020019060010190808311610972575b5050505050815250508661198c565b600085815260118201602052604081206001810154909190612710906109bf906060880135615144565b6109c99190615349565b9050808260030160008282546109df919061536b565b9091555050600087815260278401602090815260408083208554845290915281208054839290610a1090849061536b565b9091555060009050610a3286356020880135604089013560608a013589611f55565b9050610a3f898983611fd0565b60008981526012850160205260408120600401805460ff19166001179055610a6788806150c2565b9050905060008060005b83811015610c4d57829150610ae985610a8d60408e018e6150c2565b84818110610a9d57610a9d61537e565b9050602002810190610aaf9190615394565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061204392505050565b9250610af860208c018c6150c2565b82818110610b0857610b0861537e565b90506020020135610b18846120fb565b14610ba55784610b2b60408d018d6150c2565b83818110610b3b57610b3b61537e565b9050602002810190610b4d9190615394565b610b5686610625565b610b5f876120fb565b8f8060200190610b6f91906150c2565b87818110610b7f57610b7f61537e565b9050602002013560405163ed7dd8af60e01b815260040161028e969594939291906153db565b826001600160a01b0316826001600160a01b031610610bea5760405163d953cdd960e01b81526001600160a01b0380841660048301528416602482015260440161028e565b610c3b610bfa60208d018d6150c2565b83818110610c0a57610c0a61537e565b602002919091013590508e610c1f8e806150c2565b85818110610c2f57610c2f61537e565b9050602002013561212c565b80610c4581615429565b915050610a71565b5060008c815260108801602052604090819020805460ff19166001179055518c907f56eae0275a21a12b30f91b02a57d763a8da5067e40cc082e5d2717e56a2aea2090610c9d908e815260200190565b60405180910390a2505050505050505050505050565b600080610cbe611482565b6000938452600e01602052505060409020546001600160a01b0316151590565b6000610313610ceb611225565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000610d36611482565b9050610d4183612415565b610d8d5760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b610d9684612450565b610dd95760405162461bcd60e51b81526020600482015260146024820152731bd89a9958dd081b9bdd081d1bdad95b9a5e995960621b604482015260640161028e565b6000848152600c8201602052604081208054610df490615442565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2090615442565b8015610e6d5780601f10610e4257610100808354040283529160200191610e6d565b820191906000526020600020905b815481529060010190602001808311610e5057829003601f168201915b5050505050905081602c0181604051610e86919061547c565b9081526040805160209281900383019020600090819055878152600c85019092529020610eb385826154d1565b506000858152600d830160205260409020610ece84826154d1565b508482602c0185604051610ee2919061547c565b908152602001604051809103902081905550847f4e5c23b5537f69e8864b5c33a22085f48db456d4a6dfd6ac8f691556bc8f909e8585604051610f26929190615591565b60405180910390a25050505050565b6000610f3f611482565b6000848152600f8201602052604090205490915060ff16610f765760405163e1f8801360e01b81526004810184905260240161028e565b610f7f82612484565b6000838152601182016020526040902060018101546003820154915490919084358114610fee5760405162461bcd60e51b815260206004820152601a60248201527f61737365744964206368616e6765206e6f7420616c6c6f776564000000000000604482015260640161028e565b6000868152601185016020526040908190209086013560029091015561101a60a08601608087016155b6565b60008781526011860160205260409020600401805460ff1916911515919091179055801580159061104f575082856020013514155b156111f257600083611065602088013585615144565b61106f9190615349565b6000888152602787016020908152604080832086845290915281205491925090829061109c9086906155d3565b6110a6919061536b565b9050806110b38985612725565b10156111165760405162461bcd60e51b815260206004820152602c60248201527f636f6c6c61746572616c20726174696f20696e76616c69642c206e6f7420656e60448201526b6f7567682062616c616e636560a01b606482015260840161028e565b866040013582111561117c5760405162461bcd60e51b815260206004820152602960248201527f6d6178206361706163697479206d757374206265203e3d207574696c697a656460448201526820636170616369747960b81b606482015260840161028e565b600088815260118701602090815260408083208a83013560018201819055600390910186905560278a018352818420878552835292819020849055805192835290820184905289917f859dcf182c6cdb0b87490f406c38a81a37e53defb3f5f9e20d5525ae9757a700910160405180910390a250505b60405186907fad70f6507f1aeb0fd1f13346cb14180cc3c76c7a31441dcd28a5e1b78c6f7a7390600090a2505050505050565b600080611230611482565b90508060010154461461124a5761124561274f565b611250565b80600201545b91505090565b60408051808201909152606080825260208201526000611274611482565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156112de57602002820191906000526020600020905b8154815260200190600101908083116112ca575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561135e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116113255790505b505050919092525050815151919250501580611381575060208101515181515114155b1561147a576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156113ee57602002820191906000526020600020905b8154815260200190600101908083116113da575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561146e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114355790505b50505050508152505090505b949350505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600082116114f65760405162461bcd60e51b815260206004820152601760248201527f6d696e7420616d6f756e74206d757374206265203e2030000000000000000000604482015260640161028e565b600081116115465760405162461bcd60e51b815260206004820152601760248201527f746f74616c207072696365206d757374206265203e2030000000000000000000604482015260640161028e565b6000611550611482565b6000858152600f8201602052604090205490915060ff166115875760405163e1f8801360e01b81526004810185905260240161028e565b61159084612450565b6115b057604051639262bf2960e01b81526004810185905260240161028e565b6000848152601182016020908152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003820154606082015260049091015460ff161515608082015261160d8580866127f7565b600061162286878785600001518860036129ad565b50506000878152600c850160209081526040808320600d880190925291829020915192935088927f1e0fe2db2ce2d56ef315966bafe53189281e5297e62c10199727acdc3b547f7e92611679928692909190615663565b60405180910390a2505050505050565b6000611693611482565b905082516000036116ba57604051633276fee960e11b81526004810185905260240161028e565b601083511061171a5760405162461bcd60e51b815260206004820152602660248201527f73796d626f6c206d757374206265206c657373207468616e203136206368617260448201526561637465727360d01b606482015260840161028e565b6000848152600f8201602052604090205460ff1661174e5760405163e1f8801360e01b81526004810185905260240161028e565b61175784612450565b156117a45760405162461bcd60e51b815260206004820152601860248201527f6f626a65637420616c726561647920746f6b656e697a65640000000000000000604482015260640161028e565b6117ad83612415565b6117f95760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b60008251116118435760405162461bcd60e51b81526020600482015260166024820152756e616d65206d757374206e6f7420626520656d70747960501b604482015260640161028e565b6000848152600c82016020526040902061185d84826154d1565b506000848152600d82016020526040902061187883826154d1565b508381602c018460405161188c919061547c565b9081526020016040518091039020819055507ff4416a16cc504990a6dc76d2ef631f24500fbcc260ee1530d9b74a4ad28781738484846040516118d19392919061568e565b60405180910390a150505050565b600081516000036118f257506000919050565b506020015190565b60008061190685612a3a565b905061191381858561191c565b95945050505050565b600080611927611482565b6000868152601f820160209081526040808320888452909152902054909150801580159061197057506000818152601d83016020908152604080832087845290915290205460ff165b1561198057600192505050610407565b50600095945050505050565b60008260600151116119d05760405162461bcd60e51b815260206004820152600d60248201526c06c696d6974206e6f74203e203609c1b604482015260640161028e565b6119dd8260400151612a5a565b611a295760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b60c082015115611a4c5760405163c96caacd60e01b815260040160405180910390fd5b60e082015115611a6f57604051632696d55d60e11b815260040160405180910390fd5b8160a0015115611a92576040516313b4184f60e31b815260040160405180910390fd5b6000611a9c611482565b6000858152601182016020908152604091829020825160a08101845281548082526001830154938201939093526002820154818501526003820154606082015260049091015460ff161515608082015291860151929350909114611b425760405162461bcd60e51b815260206004820152601e60248201527f6173736574206e6f74206d61746368696e67207769746820656e746974790000604482015260640161028e565b600061271082602001518660600151611b5b9190615144565b611b659190615349565b8260600151611b74919061536b565b90508082604001511015611bca5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820617661696c61626c65206361706163697479000000604482015260640161028e565b80611bd9878760400151612725565b1015611c1c5760405162461bcd60e51b81526020600482015260126024820152711b9bdd08195b9bdd59da0818d85c1a5d185b60721b604482015260640161028e565b8451421115611c6d5760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203c20626c6f636b2e74696d657374616d7000000000604482015260640161028e565b8451602086015111611cc15760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203e206d617475726174696f6e206461746500000000604482015260640161028e565b845160208601516201518091611cd6916155d3565b11611d315760405162461bcd60e51b815260206004820152602560248201527f706f6c69637920706572696f64206d757374206265206d6f7265207468616e20604482015264612064617960d81b606482015260840161028e565b6000611d3e876001611256565b80515190915080611d915760405162461bcd60e51b815260206004820181905260248201527f6d757374206861766520666565207363686564756c6520726563656976657273604482015260640161028e565b61010087015151611da287806150c2565b9050811115611df35760405162461bcd60e51b815260206004820152601d60248201527f746f6f206d616e7920636f6d6d697373696f6e20726563656976657273000000604482015260640161028e565b61012088015151818114611e535760405162461bcd60e51b815260206004820152602160248201527f6e756d626572206f6620636f6d6d697373696f6e7320646f6e2774206d6174636044820152600d60fb1b606482015260840161028e565b6000805b82811015611e9b578a61012001518181518110611e7657611e7661537e565b602002602001015182611e89919061536b565b9150611e9481615429565b9050611e57565b50611ea96002612710615349565b811115611ee05780611ebe6002612710615349565b6040516309281e0960e01b81526004810192909252602482015260440161028e565b611eed60208a018a6150c2565b9050611ef98a806150c2565b905014611f485760405162461bcd60e51b815260206004820152601b60248201527f7374616b65686f6c6465727320726f6c6573206d69736d617463680000000000604482015260640161028e565b5050505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c08101829052600090611fc69060e00160405160208183030381529060405280519060200120610cde565b9695505050505050565b6000611fda611482565b9050611fe584612a9a565b6000848152600a820160209081526040808320869055600b840182529182902084905581518681529081018590529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060016118d1565b600080600080845160410361208b5750505060208201516040830151606084015160001a80801561207b576001811461208457612089565b601b9150612089565b601c91505b505b60006120ef6120e7886040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b838686612b81565b50979650505050505050565b600080612106611482565b9050600061211384610625565b6000908152600a90920160205250604090205492915050565b6000612136611482565b90508360000361217c5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640161028e565b826000036121c15760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640161028e565b816000036122035760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640161028e565b6000848152601f8201602090815260408083208684529091529020546122276105f5565b84148015612260575061225d6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b81145b801561226c5750828114155b156122de57600182602a0154116122d15760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840161028e565b602a820180546000190190555b6122e66105f5565b8414801561231f575061231c6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b83145b1561239a5761232d85612c45565b6001600160a01b03166123677fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b03160361238e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a001610f26565b600080612420611482565b90506000801b81602c0184604051612438919061547c565b90815260200160405180910390205414915050919050565b60008061245b611482565b6000848152600c82016020526040902080549192509061247a90615442565b1515949350505050565b803515612624576124958135612a5a565b6124e15760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b80602001356001111580156124fc5750612710816020013511155b6125565760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840161028e565b61256660a08201608083016155b6565b1580612576575060008160400135115b6125e85760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840161028e565b8060400135816060013511156126215760408051630102498560e11b81526060830135600482015290820135602482015260440161028e565b50565b6020810135156126765760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640161028e565b61268660a08201608083016155b6565b156126d35760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640161028e565b6040810135156126215760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640161028e565b600080612730611482565b6000938452601501602090815260408085209585529490525050205490565b60008061275a611482565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8160040160405161278e91906156b9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b826000036128535760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b606482015260840161028e565b600081116128a35760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e7300604482015260640161028e565b60006128ad611482565b90506128be60008585856001612ca5565b6000838152601682016020526040812080548492906128de90849061536b565b9091555050600083815260158201602090815260408083208784529091528120805484929061290e90849061536b565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916129579161572f565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f91889190615762565b60405180910390a350505050565b60008060006129c0898989898989612e79565b60006129d08a8a8a8a8a8a613285565b905080604001519250806060015191506129f88a8a83602001518b8b86600001518c8c613555565b93506000612a04611482565b600086815260218201602052604090206008015490915060001901612a2c57612a2c8561377a565b505096509650969350505050565b600080612a45611482565b6000938452600a016020525050604090205490565b600080612a65611482565b9050806013016000612a7685612c45565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000612aa4611482565b600083815260098201602052604090205490915060ff1615612b215760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161028e565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612bb85750600090506003612c3c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c0c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c3557600060019250925050612c3c565b9150600090505b94509492505050565b60006001600160601b03821615612c9e5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161028e565b5060601c90565b6000612caf611482565b90506000612cbc856138ff565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612d1757602002820191906000526020600020905b815481526020019060010190808311612d03575b5050505050905060005b8151811015612e6e576000828281518110612d3e57612d3e61537e565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612d748987848461391f565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612dac90849061536b565b90915550508b15612df05760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612dea9084906155d3565b90915550505b8715612e5a5760008a8152601b8801602090815260408083208684529091529020548690612e1f908b90615144565b612e299190615349565b60008b8152601b89016020908152604080832087845290915281208054909190612e5490849061536b565b90915550505b50505080612e6790615429565b9050612d21565b505050505050505050565b6000612e83611482565b90508615801590612ea457506000878152600f8201602052604090205460ff165b612f015760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b606482015260840161028e565b6000868152600f8201602052604081205460ff16906001600160601b038816158015612f555750826013016000612f378a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b038816158015612fae5750846013016000612f908a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b9050612fba898861396f565b8380612fc35750825b61300f5760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c69640000000000000000604482015260640161028e565b81806130185750805b6130645760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c6964000000000000000000604482015260640161028e565b878a036130b35760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e0000604482015260640161028e565b8380156130bd5750805b806130cd57508280156130cd5750815b6131385760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b606482015260840161028e565b60008a815260158601602090815260408083208e845290915290205489111561319a5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015260640161028e565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a916131d4916155d3565b10156132375760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b606482015260840161028e565b60028614806132465750600386145b611f485760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b604482015260640161028e565b6132b06040518060800160405280600081526020016000815260200160008152602001600081525090565b60006132ba611482565b84835260208301879052905060006001600160601b03861615801561330757508160130160006132e988612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b602083015115801590613324575080806133245750825115155b1561354957600086815260228301602090815260408083208b8452909152812054908190036133535750613549565b600081815260218401602090815260409091206005810154600290910154918601518651919291829190846133888484615144565b613392919061536b565b61339c919061536b565b6133a6919061536b565b6133b0919061536b565b86516133bc9084615144565b11156133ca57505050613549565b5050600080831561347757602080870151600085815260218801909252604090912060050154106133ff578560200151613414565b60008381526021860160205260409020600501545b6000848152602187016020526040902060058101546002909101549193509061343d9084615144565b6134479190615349565b9050600061345988858f85878a613abc565b9050808760400181815161346d919061536b565b90525061350c9050565b85516000848152602187016020526040902060020154106134995785516134ae565b60008381526021860160205260409020600201545b600084815260218701602052604090206002810154600590910154919250906134d79083615144565b6134e19190615349565b915060006134f388858f85878a613abc565b90508087606001818151613507919061536b565b905250505b818660200181815161351e91906155d3565b9052508551811161353b5785516135369082906155d3565b61353e565b60005b86525061330a915050565b50509695505050505050565b600080613560611482565b90506000816020016000815461357590615429565b91905081905590506135e360405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080613626575060018a105b15613638576003610100820152613671565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c929061366b90849061536b565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d89610100015160405161376396959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b6000613784611482565b905061378f82613cfe565b156137dc5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c69737400000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061382957506138298783613d91565b15613849575060008181526021860160205260409020600a015490613815565b80801561387c576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506138a0565b60008681526022880160209081526040808320888452909152902080549089905593505b83156138c95760008481526021880160205260408082206009018a90558982529020600a018490555b6000868152602388016020908152604080832088845290915281208054916138f083615429565b91905055505050505050505050565b60008061390a611482565b60009384526016016020525050604090205490565b60008061392c8685615144565b905060008515613945576139408683615349565b613948565b60005b9050808410156139615761395c84826155d3565b613964565b60005b979650505050505050565b6001600160801b038211156139d05760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b606482015260840161028e565b6001600160801b03811115613a275760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d6974604482015260640161028e565b60008211613a705760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b604482015260640161028e565b60008111613ab85760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b604482015260640161028e565b5050565b600080613ac7611482565b9050613ad4878686613df1565b600087815260218201602052604081206007015460031480613af65750600389145b15613b0357506003613b07565b5060025b6000600382148015613b2e5750600089815260218401602052604090206001810154905414155b15613b4a57506000888152602183016020526040902054613b4d565b50865b8415613b8357600089815260218401602052604090208054600190910154613b7c9184918491908c908c613f16565b9350613baf565b600089815260218401602052604090208054600490910154613bac9184918491908c908b613f16565b93505b6000898152602184016020908152604080832080548452602787018352818420600190910154845290915281208054899290613bec9084906155d3565b9091555050600089815260218401602052604090208054600190910154613c1691908a908a6140f1565b50600089815260218401602052604090208054600490910154613c3b918a91896140f1565b505050600087815260218201602052604090206002015460011115613c7b57600087815260218201602052604090206003600890910155613c7b87614385565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b600080613d09611482565b60008481526021820160205260409020600181015460049091015491925090841580159061191357506000858152602184016020526040902060090154151580613d65575060008581526021840160205260409020600a015415155b806119135750600091825260229290920160209081526040808320938352929052205491909114919050565b600080613d9c611482565b600085815260218201602052604080822060028082015460059283015489865293909420908101549101549394509192909190613dd98482615144565b613de38385615144565b101598975050505050505050565b6000613dfb611482565b9050600080613e098661451a565b91509150613e17858561396f565b8060200151841115613e6b5760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c617267650000604482015260640161028e565b8160200151851115613ebf5760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c61726765604482015260640161028e565b848260200151613ecf91906155d3565b6000878152602185016020908152604090912060020191909155810151613ef79085906155d3565b6000968752602190930160205250506040909320600501929092555050565b600080613f21611482565b90506000613f2f888a611256565b6026830154909150600090600160401b900461ffff1615613fdd57602683015461271090613f6890600160401b900461ffff1687615144565b613f729190615349565b9050613f7e818561536b565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd88846002604051613fc7939291909283526020830191909152604082015260600190565b60405180910390a3613fdb878988846140f1565b505b81515160005b818110156140e257612710846020015182815181106140045761400461537e565b602002602001015161ffff168861401b9190615144565b6140259190615349565b925082156140d0576140568b856000015183815181106140475761404761537e565b60200260200101518a866140f1565b50614061838761536b565b9550836000015181815181106140795761407961537e565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a8660026040516140c7939291909283526020830191909152604082015260600190565b60405180910390a35b806140da81615429565b915050613fe3565b50505050509695505050505050565b6000806140fc611482565b600085815260158201602090815260408083208a845290915290205490915083111561417a5760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b606482015260840161028e565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916141b4916155d3565b10156142285760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b656400606482015260840161028e565b6142328685614590565b600084815260158201602090815260408083208984529091528120805485929061425d9084906155d3565b9091555050600084815260158201602090815260408083208884529091528120805485929061428d90849061536b565b909155506142a19050868686866000612ca5565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061581f8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061581f8339815191529181900360a00190a350600195945050505050565b600061438f611482565b905061439a82613cfe565b156143a8576143a88261463c565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015614480576040808201516000858152602185016020908152838220805483526027870182528483206001909101548352905291822080549192909161447a9084906155d3565b90915550505b6003816101000151146144e3576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103614515576000838152602183016020526040908190206001015490820151614515919081906148d2565b505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061454c611482565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b600061459a611482565b60008381526018820160209081526040808320805482518185028101850190935280835294955092939092918301828280156145f557602002820191906000526020600020905b8154815260200190600101908083116145e1575b5050505050905060005b81518110156103795761462c858584848151811061461f5761461f61537e565b6020026020010151614aef565b61463581615429565b90506145ff565b6000614646611482565b905061465182613cfe565b61469d5760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c6973740000000000000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260238601845282852081865290935292205461471c5760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f742065786973740000604482015260640161028e565b6000828152602284016020908152604080832084845290915290205484146147c1576000848152602184016020526040808220600901548083529120600a0154851461479e5760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600a90810154938352912001556147ef565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415614887576000848152602184016020526040808220600a015480835291206009015485146148685760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a0183905584835260238601825280832084845290915281208054916148c78361579b565b919050555050505050565b60006148dc611482565b600084815260158201602090815260408083208884529091529020549091508211156149565760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b606482015260840161028e565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391614990916155d3565b1015614a045760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b65640000000000606482015260840161028e565b614a0e8484614590565b600083815260168201602052604081208054849290614a2e9084906155d3565b90915550506000838152601582016020908152604080832087845290915281208054849290614a5e9084906155d3565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091614aa7916157b2565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f918891906157e5565b6000614af9611482565b90506000614b2b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b81525061061a565b60008581526015840160209081526040808320898452909152812054919250614b53866138ff565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190614b9d8585858561391f565b90508015614d60576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290614bd890849061536b565b90915550506000888152601588016020908152604080832089845290915281208054839290614c089084906155d3565b9091555050600088815260158801602090815260408083208d845290915281208054839290614c3890849061536b565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061581f8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061581f8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080600080600060a08688031215614d8457600080fd5b8535945060208601359350604086013567ffffffffffffffff80821115614daa57600080fd5b908701906060828a031215614dbe57600080fd5b90935060608701359080821115614dd457600080fd5b5086016101408189031215614de857600080fd5b949793965091946080013592915050565b600060208284031215614e0b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614e3957600080fd5b813567ffffffffffffffff80821115614e5457614e54614e12565b604051601f8301601f19908116603f01168101908282118183101715614e7c57614e7c614e12565b81604052838152866020858801011115614e9557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215614eca57600080fd5b83359250602084013567ffffffffffffffff80821115614ee957600080fd5b614ef587838801614e28565b93506040860135915080821115614f0b57600080fd5b50614f1886828701614e28565b9150509250925092565b60008082840360c0811215614f3657600080fd5b8335925060a0601f1982011215614f4c57600080fd5b506020830190509250929050565b60008060408385031215614f6d57600080fd5b50508035926020909101359150565b6020808252825160408383015280516060840181905260009291820190839060808601905b80831015614fc15783518252928401926001929092019190840190614fa1565b5086840151868203601f190160408801528051808352908501935090840191506000905b8082101561500957835161ffff168352928401929184019160019190910190614fe5565b50909695505050505050565b60008060006060848603121561502a57600080fd5b505081359360208301359350604090920135919050565b60005b8381101561505c578181015183820152602001615044565b50506000910152565b6000815180845261507d816020860160208601615041565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006150b06080830185615065565b82810360608401526139648185615065565b6000808335601e198436030181126150d957600080fd5b83018035915067ffffffffffffffff8211156150f457600080fd5b6020019150600581901b360382131561510c57600080fd5b9250929050565b801515811461262157600080fd5b6000813561031381615113565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103135761031361512e565b67ffffffffffffffff83111561517357615173614e12565b600160401b83111561518757615187614e12565b8054838255808410156151be576000828152602081208581019083015b808210156151ba578282556001820191506151a4565b5050505b5060008181526020812083915b858110156151e7578235828201556020909201916001016151cb565b505050505050565b5b81811015613ab857600081556001016151f0565b67ffffffffffffffff83111561521c5761521c614e12565b600160401b83111561523057615230614e12565b805483825580841015615256578160005260206000206152548282018683016151ef565b505b50818160005260208060002060005b8681101561527f5783358282015592820192600101615265565b50505050505050565b81358155602082013560018201556040820135600282015560608201356003820155600481016152d16152bd60808501615121565b825490151560ff1660ff1991909116178255565b6152fa6152e060a08501615121565b82805461ff00191691151560081b61ff0016919091179055565b5060c0820135600582015560e0820135600682015561531d6101008301836150c2565b61532b81836007860161515b565b505061533b6101208301836150c2565b6103d4818360088601615204565b60008261536657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156103135761031361512e565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126153ab57600080fd5b83018035915067ffffffffffffffff8211156153c657600080fd5b60200191503681900382131561510c57600080fd5b86815260a060208201528460a0820152848660c0830137600060c08683010152600060c0601f19601f8801168301019050846040830152836060830152826080830152979650505050505050565b60006001820161543b5761543b61512e565b5060010190565b600181811c9082168061545657607f821691505b60208210810361547657634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161548e818460208701615041565b9190910192915050565b601f82111561451557806000526020600020601f840160051c810160208510156154bf5750805b610379601f850160051c8301826151ef565b815167ffffffffffffffff8111156154eb576154eb614e12565b6154ff816154f98454615442565b84615498565b602080601f831160018114615534576000841561551c5750858301515b600019600386901b1c1916600185901b1785556151e7565b600085815260208120601f198616915b8281101561556357888601518255948401946001909101908401615544565b50858210156155815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006155a46040830185615065565b82810360208401526119138185615065565b6000602082840312156155c857600080fd5b813561040781615113565b818103818111156103135761031361512e565b600081546155f381615442565b808552602060018381168015615610576001811461562a57615658565b60ff1985168884015283151560051b880183019550615658565b866000528260002060005b858110156156505781548a8201860152908301908401615635565b890184019650505b505050505092915050565b83815260606020820152600061567c60608301856155e6565b8281036040840152611fc681856155e6565b8381526060602082015260006156a76060830185615065565b8281036040840152611fc68185615065565b60008083546156c781615442565b600182811680156156df57600181146156f457615723565b60ff1984168752821515830287019450615723565b8760005260208060002060005b8581101561571a5781548a820152908401908201615701565b50505082870194505b50929695505050505050565b81815260406020820152600061040760408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b6000816157aa576157aa61512e565b506000190190565b81815260406020820152600061040760408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220786393c66ce91cc54f526fbf7fff378b15a52e5406f5f32b8a6ab4d45def329d64736f6c63430008110033", - "nonce": "0x8c", + "data": "0x608060405234801561001057600080fd5b5061587480620000216000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806378e890ba1161006657806378e890ba14610127578063a1a2e2951461012f578063a2e4569b1461014f578063edd2133b14610162578063f17d17f4146101b957600080fd5b806304e2e500146100a357806310b4955d146100b85780634980f288146100e057806360f58edf1461010157806373abdfa514610114575b600080fd5b6100b66100b1366004614d6c565b6101cc565b005b6100cb6100c6366004614df9565b610308565b60405190151581526020015b60405180910390f35b6100f36100ee366004614df9565b610319565b6040519081526020016100d7565b6100b661010f366004614eb5565b610324565b6100b6610122366004614f22565b610380565b6100f36103da565b61014261013d366004614f5a565b6103e9565b6040516100d79190614f7c565b6100b661015d366004615015565b61040e565b610175610170366004614df9565b61056c565b6040516100d79190600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b6100b66101c7366004614eb5565b6105a0565b6101d46105f5565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b81525061021d8261020d8361061a565b61021633610625565b919061063a565b6102975761022a33610625565b8260006102408261023a33610625565b90610695565b1461025f5761025a6102558561023a33610625565b6106c0565b610270565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161028e9493929190615091565b60405180910390fd5b856102a1816106f1565b608001516102f15760405162461bcd60e51b815260206004820152601f60248201527f73696d706c6520706f6c696379206372656174696f6e2064697361626c656400604482015260640161028e565b6102fe888888888861077c565b5050505050505050565b600061031382610cb3565b92915050565b600061031382610cde565b61032c6105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103618261020d8361061a565b61036e5761022a33610625565b610379858585610d2c565b5050505050565b6103886105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506103bd8261020d8361061a565b6103ca5761022a33610625565b6103d48484610f35565b50505050565b60006103e4611225565b905090565b60408051808201909152606080825260208201526104078383611256565b9392505050565b6000356001600160e01b03191661045d816001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b1561049f5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604482015260640161028e565b60026104a9611482565b60030154036104fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028e565b6002610504611482565b6003015560408051808201909152601081526f537461727420546f6b656e2053616c6560801b6020820152849061053e8261020d8361061a565b61054b5761022a33610625565b6105568686866114a6565b50506001610562611482565b6003015550505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152610313826106f1565b6105a86105f5565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506105dd8261020d8361061a565b6105ea5761022a33610625565b610379858585611689565b60006103e46040518060400160405280600681526020016553797374656d60d01b8152505b6000610313826118df565b60601b6bffffffffffffffffffffffff191690565b60006106478484846118fa565b1561065457506001610407565b61065f84848461191c565b1561066c57506001610407565b61067e846106786105f5565b8461191c565b1561068b57506001610407565b5060009392505050565b6000806106a0611482565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610724611482565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600085900361079e5760405163083191a360e41b815260040160405180910390fd5b60006107a8611482565b6000868152600f8201602052604090205490915060ff166107df5760405163e1f8801360e01b81526004810186905260240161028e565b6107ec60408501856150c2565b90506107fb60208601866150c2565b90501461084a5760405162461bcd60e51b815260206004820152601e60248201527f696e636f7272656374206e756d626572206f66207369676e6174757265730000604482015260640161028e565b6000868152601282016020526040902083906108668282615288565b505060008681526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752610995968c96949594938601939092919083018282801561092e57602002820191906000526020600020905b81548152602001906001019080831161091a575b505050505081526020016008820180548060200260200160405190810160405280929190818152602001828054801561098657602002820191906000526020600020905b815481526020019060010190808311610972575b5050505050815250508661198c565b600085815260118201602052604081206001810154909190612710906109bf906060880135615144565b6109c99190615349565b9050808260030160008282546109df919061536b565b9091555050600087815260278401602090815260408083208554845290915281208054839290610a1090849061536b565b9091555060009050610a3286356020880135604089013560608a013589611f55565b9050610a3f898983611fd0565b60008981526012850160205260408120600401805460ff19166001179055610a6788806150c2565b9050905060008060005b83811015610c4d57829150610ae985610a8d60408e018e6150c2565b84818110610a9d57610a9d61537e565b9050602002810190610aaf9190615394565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061204392505050565b9250610af860208c018c6150c2565b82818110610b0857610b0861537e565b90506020020135610b18846120fb565b14610ba55784610b2b60408d018d6150c2565b83818110610b3b57610b3b61537e565b9050602002810190610b4d9190615394565b610b5686610625565b610b5f876120fb565b8f8060200190610b6f91906150c2565b87818110610b7f57610b7f61537e565b9050602002013560405163ed7dd8af60e01b815260040161028e969594939291906153db565b826001600160a01b0316826001600160a01b031610610bea5760405163d953cdd960e01b81526001600160a01b0380841660048301528416602482015260440161028e565b610c3b610bfa60208d018d6150c2565b83818110610c0a57610c0a61537e565b602002919091013590508e610c1f8e806150c2565b85818110610c2f57610c2f61537e565b9050602002013561212c565b80610c4581615429565b915050610a71565b5060008c815260108801602052604090819020805460ff19166001179055518c907f56eae0275a21a12b30f91b02a57d763a8da5067e40cc082e5d2717e56a2aea2090610c9d908e815260200190565b60405180910390a2505050505050505050505050565b600080610cbe611482565b6000938452600e01602052505060409020546001600160a01b0316151590565b6000610313610ceb611225565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000610d36611482565b9050610d4183612415565b610d8d5760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b610d9684612450565b610dd95760405162461bcd60e51b81526020600482015260146024820152731bd89a9958dd081b9bdd081d1bdad95b9a5e995960621b604482015260640161028e565b6000848152600c8201602052604081208054610df490615442565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2090615442565b8015610e6d5780601f10610e4257610100808354040283529160200191610e6d565b820191906000526020600020905b815481529060010190602001808311610e5057829003601f168201915b5050505050905081602c0181604051610e86919061547c565b9081526040805160209281900383019020600090819055878152600c85019092529020610eb385826154d1565b506000858152600d830160205260409020610ece84826154d1565b508482602c0185604051610ee2919061547c565b908152602001604051809103902081905550847f4e5c23b5537f69e8864b5c33a22085f48db456d4a6dfd6ac8f691556bc8f909e8585604051610f26929190615591565b60405180910390a25050505050565b6000610f3f611482565b6000848152600f8201602052604090205490915060ff16610f765760405163e1f8801360e01b81526004810184905260240161028e565b610f7f82612484565b6000838152601182016020526040902060018101546003820154915490919084358114610fee5760405162461bcd60e51b815260206004820152601a60248201527f61737365744964206368616e6765206e6f7420616c6c6f776564000000000000604482015260640161028e565b6000868152601185016020526040908190209086013560029091015561101a60a08601608087016155b6565b60008781526011860160205260409020600401805460ff1916911515919091179055801580159061104f575082856020013514155b156111f257600083611065602088013585615144565b61106f9190615349565b6000888152602787016020908152604080832086845290915281205491925090829061109c9086906155d3565b6110a6919061536b565b9050806110b38985612725565b10156111165760405162461bcd60e51b815260206004820152602c60248201527f636f6c6c61746572616c20726174696f20696e76616c69642c206e6f7420656e60448201526b6f7567682062616c616e636560a01b606482015260840161028e565b866040013582111561117c5760405162461bcd60e51b815260206004820152602960248201527f6d6178206361706163697479206d757374206265203e3d207574696c697a656460448201526820636170616369747960b81b606482015260840161028e565b600088815260118701602090815260408083208a83013560018201819055600390910186905560278a018352818420878552835292819020849055805192835290820184905289917f859dcf182c6cdb0b87490f406c38a81a37e53defb3f5f9e20d5525ae9757a700910160405180910390a250505b60405186907fad70f6507f1aeb0fd1f13346cb14180cc3c76c7a31441dcd28a5e1b78c6f7a7390600090a2505050505050565b600080611230611482565b90508060010154461461124a5761124561274f565b611250565b80600201545b91505090565b60408051808201909152606080825260208201526000611274611482565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156112de57602002820191906000526020600020905b8154815260200190600101908083116112ca575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561135e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116113255790505b505050919092525050815151919250501580611381575060208101515181515114155b1561147a576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156113ee57602002820191906000526020600020905b8154815260200190600101908083116113da575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561146e57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114355790505b50505050508152505090505b949350505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600082116114f65760405162461bcd60e51b815260206004820152601760248201527f6d696e7420616d6f756e74206d757374206265203e2030000000000000000000604482015260640161028e565b600081116115465760405162461bcd60e51b815260206004820152601760248201527f746f74616c207072696365206d757374206265203e2030000000000000000000604482015260640161028e565b6000611550611482565b6000858152600f8201602052604090205490915060ff166115875760405163e1f8801360e01b81526004810185905260240161028e565b61159084612450565b6115b057604051639262bf2960e01b81526004810185905260240161028e565b6000848152601182016020908152604091829020825160a081018452815481526001820154928101929092526002810154928201929092526003820154606082015260049091015460ff161515608082015261160d8580866127f7565b600061162286878785600001518860036129ad565b50506000878152600c850160209081526040808320600d880190925291829020915192935088927f1e0fe2db2ce2d56ef315966bafe53189281e5297e62c10199727acdc3b547f7e92611679928692909190615663565b60405180910390a2505050505050565b6000611693611482565b905082516000036116ba57604051633276fee960e11b81526004810185905260240161028e565b601083511061171a5760405162461bcd60e51b815260206004820152602660248201527f73796d626f6c206d757374206265206c657373207468616e203136206368617260448201526561637465727360d01b606482015260840161028e565b6000848152600f8201602052604090205460ff1661174e5760405163e1f8801360e01b81526004810185905260240161028e565b61175784612450565b156117a45760405162461bcd60e51b815260206004820152601860248201527f6f626a65637420616c726561647920746f6b656e697a65640000000000000000604482015260640161028e565b6117ad83612415565b6117f95760405162461bcd60e51b815260206004820152601b60248201527f746f6b656e2073796d626f6c20616c726561647920696e207573650000000000604482015260640161028e565b60008251116118435760405162461bcd60e51b81526020600482015260166024820152756e616d65206d757374206e6f7420626520656d70747960501b604482015260640161028e565b6000848152600c82016020526040902061185d84826154d1565b506000848152600d82016020526040902061187883826154d1565b508381602c018460405161188c919061547c565b9081526020016040518091039020819055507ff4416a16cc504990a6dc76d2ef631f24500fbcc260ee1530d9b74a4ad28781738484846040516118d19392919061568e565b60405180910390a150505050565b600081516000036118f257506000919050565b506020015190565b60008061190685612a3a565b905061191381858561191c565b95945050505050565b600080611927611482565b6000868152601f820160209081526040808320888452909152902054909150801580159061197057506000818152601d83016020908152604080832087845290915290205460ff165b1561198057600192505050610407565b50600095945050505050565b60008260600151116119d05760405162461bcd60e51b815260206004820152600d60248201526c06c696d6974206e6f74203e203609c1b604482015260640161028e565b6119dd8260400151612a5a565b611a295760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b60c082015115611a4c5760405163c96caacd60e01b815260040160405180910390fd5b60e082015115611a6f57604051632696d55d60e11b815260040160405180910390fd5b8160a0015115611a92576040516313b4184f60e31b815260040160405180910390fd5b6000611a9c611482565b6000858152601182016020908152604091829020825160a08101845281548082526001830154938201939093526002820154818501526003820154606082015260049091015460ff161515608082015291860151929350909114611b425760405162461bcd60e51b815260206004820152601e60248201527f6173736574206e6f74206d61746368696e67207769746820656e746974790000604482015260640161028e565b600061271082602001518660600151611b5b9190615144565b611b659190615349565b8260600151611b74919061536b565b90508082604001511015611bca5760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820617661696c61626c65206361706163697479000000604482015260640161028e565b80611bd9878760400151612725565b1015611c1c5760405162461bcd60e51b81526020600482015260126024820152711b9bdd08195b9bdd59da0818d85c1a5d185b60721b604482015260640161028e565b8451421115611c6d5760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203c20626c6f636b2e74696d657374616d7000000000604482015260640161028e565b8451602086015111611cc15760405162461bcd60e51b815260206004820152601c60248201527f73746172742064617465203e206d617475726174696f6e206461746500000000604482015260640161028e565b845160208601516201518091611cd6916155d3565b11611d315760405162461bcd60e51b815260206004820152602560248201527f706f6c69637920706572696f64206d757374206265206d6f7265207468616e20604482015264612064617960d81b606482015260840161028e565b6000611d3e876001611256565b80515190915080611d915760405162461bcd60e51b815260206004820181905260248201527f6d757374206861766520666565207363686564756c6520726563656976657273604482015260640161028e565b61010087015151611da287806150c2565b9050811115611df35760405162461bcd60e51b815260206004820152601d60248201527f746f6f206d616e7920636f6d6d697373696f6e20726563656976657273000000604482015260640161028e565b61012088015151818114611e535760405162461bcd60e51b815260206004820152602160248201527f6e756d626572206f6620636f6d6d697373696f6e7320646f6e2774206d6174636044820152600d60fb1b606482015260840161028e565b6000805b82811015611e9b578a61012001518181518110611e7657611e7661537e565b602002602001015182611e89919061536b565b9150611e9481615429565b9050611e57565b50611ea96002612710615349565b811115611ee05780611ebe6002612710615349565b6040516309281e0960e01b81526004810192909252602482015260440161028e565b611eed60208a018a6150c2565b9050611ef98a806150c2565b905014611f485760405162461bcd60e51b815260206004820152601b60248201527f7374616b65686f6c6465727320726f6c6573206d69736d617463680000000000604482015260640161028e565b5050505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c08101829052600090611fc69060e00160405160208183030381529060405280519060200120610cde565b9695505050505050565b6000611fda611482565b9050611fe584612a9a565b6000848152600a820160209081526040808320869055600b840182529182902084905581518681529081018590529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060016118d1565b600080600080845160410361208b5750505060208201516040830151606084015160001a80801561207b576001811461208457612089565b601b9150612089565b601c91505b505b60006120ef6120e7886040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b838686612b81565b50979650505050505050565b600080612106611482565b9050600061211384610625565b6000908152600a90920160205250604090205492915050565b6000612136611482565b90508360000361217c5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640161028e565b826000036121c15760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640161028e565b816000036122035760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640161028e565b6000848152601f8201602090815260408083208684529091529020546122276105f5565b84148015612260575061225d6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b81145b801561226c5750828114155b156122de57600182602a0154116122d15760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840161028e565b602a820180546000190190555b6122e66105f5565b8414801561231f575061231c6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525061061a565b83145b1561239a5761232d85612c45565b6001600160a01b03166123677fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b03160361238e57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a001610f26565b600080612420611482565b90506000801b81602c0184604051612438919061547c565b90815260200160405180910390205414915050919050565b60008061245b611482565b6000848152600c82016020526040902080549192509061247a90615442565b1515949350505050565b803515612624576124958135612a5a565b6124e15760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640161028e565b80602001356001111580156124fc5750612710816020013511155b6125565760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840161028e565b61256660a08201608083016155b6565b1580612576575060008160400135115b6125e85760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840161028e565b8060400135816060013511156126215760408051630102498560e11b81526060830135600482015290820135602482015260440161028e565b50565b6020810135156126765760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640161028e565b61268660a08201608083016155b6565b156126d35760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640161028e565b6040810135156126215760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640161028e565b600080612730611482565b6000938452601501602090815260408085209585529490525050205490565b60008061275a611482565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8160040160405161278e91906156b9565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b826000036128535760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b606482015260840161028e565b600081116128a35760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e7300604482015260640161028e565b60006128ad611482565b90506128be60008585856001612ca5565b6000838152601682016020526040812080548492906128de90849061536b565b9091555050600083815260158201602090815260408083208784529091528120805484929061290e90849061536b565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916129579161572f565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f91889190615762565b60405180910390a350505050565b60008060006129c0898989898989612e79565b60006129d08a8a8a8a8a8a613285565b905080604001519250806060015191506129f88a8a83602001518b8b86600001518c8c613555565b93506000612a04611482565b600086815260218201602052604090206008015490915060001901612a2c57612a2c8561377a565b505096509650969350505050565b600080612a45611482565b6000938452600a016020525050604090205490565b600080612a65611482565b9050806013016000612a7685612c45565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000612aa4611482565b600083815260098201602052604090205490915060ff1615612b215760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840161028e565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115612bb85750600090506003612c3c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612c0c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612c3557600060019250925050612c3c565b9150600090505b94509492505050565b60006001600160601b03821615612c9e5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640161028e565b5060601c90565b6000612caf611482565b90506000612cbc856138ff565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612d1757602002820191906000526020600020905b815481526020019060010190808311612d03575b5050505050905060005b8151811015612e6e576000828281518110612d3e57612d3e61537e565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612d748987848461391f565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612dac90849061536b565b90915550508b15612df05760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612dea9084906155d3565b90915550505b8715612e5a5760008a8152601b8801602090815260408083208684529091529020548690612e1f908b90615144565b612e299190615349565b60008b8152601b89016020908152604080832087845290915281208054909190612e5490849061536b565b90915550505b50505080612e6790615429565b9050612d21565b505050505050505050565b6000612e83611482565b90508615801590612ea457506000878152600f8201602052604090205460ff165b612f015760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b606482015260840161028e565b6000868152600f8201602052604081205460ff16906001600160601b038816158015612f555750826013016000612f378a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b038816158015612fae5750846013016000612f908a612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b9050612fba898861396f565b8380612fc35750825b61300f5760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c69640000000000000000604482015260640161028e565b81806130185750805b6130645760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c6964000000000000000000604482015260640161028e565b878a036130b35760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e0000604482015260640161028e565b8380156130bd5750805b806130cd57508280156130cd5750815b6131385760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b606482015260840161028e565b60008a815260158601602090815260408083208e845290915290205489111561319a5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015260640161028e565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a916131d4916155d3565b10156132375760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b606482015260840161028e565b60028614806132465750600386145b611f485760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b604482015260640161028e565b6132b06040518060800160405280600081526020016000815260200160008152602001600081525090565b60006132ba611482565b84835260208301879052905060006001600160601b03861615801561330757508160130160006132e988612c45565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b602083015115801590613324575080806133245750825115155b1561354957600086815260228301602090815260408083208b8452909152812054908190036133535750613549565b600081815260218401602090815260409091206005810154600290910154918601518651919291829190846133888484615144565b613392919061536b565b61339c919061536b565b6133a6919061536b565b6133b0919061536b565b86516133bc9084615144565b11156133ca57505050613549565b5050600080831561347757602080870151600085815260218801909252604090912060050154106133ff578560200151613414565b60008381526021860160205260409020600501545b6000848152602187016020526040902060058101546002909101549193509061343d9084615144565b6134479190615349565b9050600061345988858f85878a613abc565b9050808760400181815161346d919061536b565b90525061350c9050565b85516000848152602187016020526040902060020154106134995785516134ae565b60008381526021860160205260409020600201545b600084815260218701602052604090206002810154600590910154919250906134d79083615144565b6134e19190615349565b915060006134f388858f85878a613abc565b90508087606001818151613507919061536b565b905250505b818660200181815161351e91906155d3565b9052508551811161353b5785516135369082906155d3565b61353e565b60005b86525061330a915050565b50509695505050505050565b600080613560611482565b90506000816020016000815461357590615429565b91905081905590506135e360405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080613626575060018a105b15613638576003610100820152613671565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c929061366b90849061536b565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d89610100015160405161376396959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b6000613784611482565b905061378f82613cfe565b156137dc5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c69737400000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061382957506138298783613d91565b15613849575060008181526021860160205260409020600a015490613815565b80801561387c576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506138a0565b60008681526022880160209081526040808320888452909152902080549089905593505b83156138c95760008481526021880160205260408082206009018a90558982529020600a018490555b6000868152602388016020908152604080832088845290915281208054916138f083615429565b91905055505050505050505050565b60008061390a611482565b60009384526016016020525050604090205490565b60008061392c8685615144565b905060008515613945576139408683615349565b613948565b60005b9050808410156139615761395c84826155d3565b613964565b60005b979650505050505050565b6001600160801b038211156139d05760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b606482015260840161028e565b6001600160801b03811115613a275760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d6974604482015260640161028e565b60008211613a705760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b604482015260640161028e565b60008111613ab85760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b604482015260640161028e565b5050565b600080613ac7611482565b9050613ad4878686613df1565b600087815260218201602052604081206007015460031480613af65750600389145b15613b0357506003613b07565b5060025b6000600382148015613b2e5750600089815260218401602052604090206001810154905414155b15613b4a57506000888152602183016020526040902054613b4d565b50865b8415613b8357600089815260218401602052604090208054600190910154613b7c9184918491908c908c613f16565b9350613baf565b600089815260218401602052604090208054600490910154613bac9184918491908c908b613f16565b93505b6000898152602184016020908152604080832080548452602787018352818420600190910154845290915281208054899290613bec9084906155d3565b9091555050600089815260218401602052604090208054600190910154613c1691908a908a6140f1565b50600089815260218401602052604090208054600490910154613c3b918a91896140f1565b505050600087815260218201602052604090206002015460011115613c7b57600087815260218201602052604090206003600890910155613c7b87614385565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b600080613d09611482565b60008481526021820160205260409020600181015460049091015491925090841580159061191357506000858152602184016020526040902060090154151580613d65575060008581526021840160205260409020600a015415155b806119135750600091825260229290920160209081526040808320938352929052205491909114919050565b600080613d9c611482565b600085815260218201602052604080822060028082015460059283015489865293909420908101549101549394509192909190613dd98482615144565b613de38385615144565b101598975050505050505050565b6000613dfb611482565b9050600080613e098661451a565b91509150613e17858561396f565b8060200151841115613e6b5760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c617267650000604482015260640161028e565b8160200151851115613ebf5760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c61726765604482015260640161028e565b848260200151613ecf91906155d3565b6000878152602185016020908152604090912060020191909155810151613ef79085906155d3565b6000968752602190930160205250506040909320600501929092555050565b600080613f21611482565b90506000613f2f888a611256565b6026830154909150600090600160401b900461ffff1615613fdd57602683015461271090613f6890600160401b900461ffff1687615144565b613f729190615349565b9050613f7e818561536b565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd88846002604051613fc7939291909283526020830191909152604082015260600190565b60405180910390a3613fdb878988846140f1565b505b81515160005b818110156140e257612710846020015182815181106140045761400461537e565b602002602001015161ffff168861401b9190615144565b6140259190615349565b925082156140d0576140568b856000015183815181106140475761404761537e565b60200260200101518a866140f1565b50614061838761536b565b9550836000015181815181106140795761407961537e565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a8660026040516140c7939291909283526020830191909152604082015260600190565b60405180910390a35b806140da81615429565b915050613fe3565b50505050509695505050505050565b6000806140fc611482565b600085815260158201602090815260408083208a845290915290205490915083111561417a5760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b606482015260840161028e565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916141b4916155d3565b10156142285760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b656400606482015260840161028e565b6142328685614590565b600084815260158201602090815260408083208984529091528120805485929061425d9084906155d3565b9091555050600084815260158201602090815260408083208884529091528120805485929061428d90849061536b565b909155506142a19050868686866000612ca5565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061581f8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061581f8339815191529181900360a00190a350600195945050505050565b600061438f611482565b905061439a82613cfe565b156143a8576143a88261463c565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015614480576040808201516000858152602185016020908152838220805483526027870182528483206001909101548352905291822080549192909161447a9084906155d3565b90915550505b6003816101000151146144e3576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103614515576000838152602183016020526040908190206001015490820151614515919081906148d2565b505050565b60408051808201909152600080825260208201526040805180820190915260008082526020820152600061454c611482565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b600061459a611482565b60008381526018820160209081526040808320805482518185028101850190935280835294955092939092918301828280156145f557602002820191906000526020600020905b8154815260200190600101908083116145e1575b5050505050905060005b81518110156103795761462c858584848151811061461f5761461f61537e565b6020026020010151614aef565b61463581615429565b90506145ff565b6000614646611482565b905061465182613cfe565b61469d5760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c6973740000000000000000604482015260640161028e565b60008281526021820160209081526040808320600181015460049091015481855260238601845282852081865290935292205461471c5760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f742065786973740000604482015260640161028e565b6000828152602284016020908152604080832084845290915290205484146147c1576000848152602184016020526040808220600901548083529120600a0154851461479e5760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600a90810154938352912001556147ef565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415614887576000848152602184016020526040808220600a015480835291206009015485146148685760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b604482015260640161028e565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a0183905584835260238601825280832084845290915281208054916148c78361579b565b919050555050505050565b60006148dc611482565b600084815260158201602090815260408083208884529091529020549091508211156149565760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b606482015260840161028e565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391614990916155d3565b1015614a045760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b65640000000000606482015260840161028e565b614a0e8484614590565b600083815260168201602052604081208054849290614a2e9084906155d3565b90915550506000838152601582016020908152604080832087845290915281208054849290614a5e9084906155d3565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091614aa7916157b2565b60405180910390a360008381526015820160209081526040808320878452909152908190205490513391869160008051602061581f8339815191529161299f918891906157e5565b6000614af9611482565b90506000614b2b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b81525061061a565b60008581526015840160209081526040808320898452909152812054919250614b53866138ff565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190614b9d8585858561391f565b90508015614d60576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290614bd890849061536b565b90915550506000888152601588016020908152604080832089845290915281208054839290614c089084906155d3565b9091555050600088815260158801602090815260408083208d845290915281208054839290614c3890849061536b565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061581f8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061581f8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080600080600060a08688031215614d8457600080fd5b8535945060208601359350604086013567ffffffffffffffff80821115614daa57600080fd5b908701906060828a031215614dbe57600080fd5b90935060608701359080821115614dd457600080fd5b5086016101408189031215614de857600080fd5b949793965091946080013592915050565b600060208284031215614e0b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112614e3957600080fd5b813567ffffffffffffffff80821115614e5457614e54614e12565b604051601f8301601f19908116603f01168101908282118183101715614e7c57614e7c614e12565b81604052838152866020858801011115614e9557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215614eca57600080fd5b83359250602084013567ffffffffffffffff80821115614ee957600080fd5b614ef587838801614e28565b93506040860135915080821115614f0b57600080fd5b50614f1886828701614e28565b9150509250925092565b60008082840360c0811215614f3657600080fd5b8335925060a0601f1982011215614f4c57600080fd5b506020830190509250929050565b60008060408385031215614f6d57600080fd5b50508035926020909101359150565b6020808252825160408383015280516060840181905260009291820190839060808601905b80831015614fc15783518252928401926001929092019190840190614fa1565b5086840151868203601f190160408801528051808352908501935090840191506000905b8082101561500957835161ffff168352928401929184019160019190910190614fe5565b50909695505050505050565b60008060006060848603121561502a57600080fd5b505081359360208301359350604090920135919050565b60005b8381101561505c578181015183820152602001615044565b50506000910152565b6000815180845261507d816020860160208601615041565b601f01601f19169290920160200192915050565b8481528360208201526080604082015260006150b06080830185615065565b82810360608401526139648185615065565b6000808335601e198436030181126150d957600080fd5b83018035915067ffffffffffffffff8211156150f457600080fd5b6020019150600581901b360382131561510c57600080fd5b9250929050565b801515811461262157600080fd5b6000813561031381615113565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176103135761031361512e565b67ffffffffffffffff83111561517357615173614e12565b600160401b83111561518757615187614e12565b8054838255808410156151be576000828152602081208581019083015b808210156151ba578282556001820191506151a4565b5050505b5060008181526020812083915b858110156151e7578235828201556020909201916001016151cb565b505050505050565b5b81811015613ab857600081556001016151f0565b67ffffffffffffffff83111561521c5761521c614e12565b600160401b83111561523057615230614e12565b805483825580841015615256578160005260206000206152548282018683016151ef565b505b50818160005260208060002060005b8681101561527f5783358282015592820192600101615265565b50505050505050565b81358155602082013560018201556040820135600282015560608201356003820155600481016152d16152bd60808501615121565b825490151560ff1660ff1991909116178255565b6152fa6152e060a08501615121565b82805461ff00191691151560081b61ff0016919091179055565b5060c0820135600582015560e0820135600682015561531d6101008301836150c2565b61532b81836007860161515b565b505061533b6101208301836150c2565b6103d4818360088601615204565b60008261536657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156103135761031361512e565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126153ab57600080fd5b83018035915067ffffffffffffffff8211156153c657600080fd5b60200191503681900382131561510c57600080fd5b86815260a060208201528460a0820152848660c0830137600060c08683010152600060c0601f19601f8801168301019050846040830152836060830152826080830152979650505050505050565b60006001820161543b5761543b61512e565b5060010190565b600181811c9082168061545657607f821691505b60208210810361547657634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161548e818460208701615041565b9190910192915050565b601f82111561451557806000526020600020601f840160051c810160208510156154bf5750805b610379601f850160051c8301826151ef565b815167ffffffffffffffff8111156154eb576154eb614e12565b6154ff816154f98454615442565b84615498565b602080601f831160018114615534576000841561551c5750858301515b600019600386901b1c1916600185901b1785556151e7565b600085815260208120601f198616915b8281101561556357888601518255948401946001909101908401615544565b50858210156155815787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6040815260006155a46040830185615065565b82810360208401526119138185615065565b6000602082840312156155c857600080fd5b813561040781615113565b818103818111156103135761031361512e565b600081546155f381615442565b808552602060018381168015615610576001811461562a57615658565b60ff1985168884015283151560051b880183019550615658565b866000528260002060005b858110156156505781548a8201860152908301908401615635565b890184019650505b505050505092915050565b83815260606020820152600061567c60608301856155e6565b8281036040840152611fc681856155e6565b8381526060602082015260006156a76060830185615065565b8281036040840152611fc68185615065565b60008083546156c781615442565b600182811680156156df57600181146156f457615723565b60ff1984168752821515830287019450615723565b8760005260208060002060005b8581101561571a5781548a820152908401908201615701565b50505082870194505b50929695505050505050565b81815260406020820152600061040760408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b6000816157aa576157aa61512e565b506000190190565b81815260406020820152600061040760408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061147a60608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba26469706673582212200bcf7862a6456e4582ce6e449869108edaa6bcd2d0467e6aa2d7b78f636e968264736f6c63430008110033", + "nonce": "0x96", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7281b30ceb6715e3fe8f504fa9c474767c361390969652fc08d6c6ebb479aae0", + "transactionType": "CREATE", + "contractName": "GovernanceFacet", + "contractAddress": "0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0xa0efd", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50610835806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806310a2bbed146100675780631d5102171461008f57806322f153db146100a4578063337781ea146100f1578063371d624414610104578063e13b9b1414610117575b600080fd5b6000805160206107e08339815191525460ff1660405190151581526020015b60405180910390f35b6100a261009d366004610723565b61013e565b005b6100e36100b2366004610723565b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef602052604090205490565b604051908152602001610086565b6100a26100ff366004610723565b61034a565b6100a2610112366004610723565b610462565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bff0546100e3565b61014661056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061018e8261017983610599565b6001600160601b03193360601b1691906105aa565b610253576001600160601b03193360601b165b8260006101f2826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1461021b57610216610211856001600160601b03193360601b166101b7565b610606565b61022c565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161024a9493929190610782565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef60205260409020546000805160206107e0833981519152904210156102eb5760405162461bcd60e51b815260206004820152602260248201527f557067726164652068617320616c7265616479206265656e207363686564756c604482015261195960f21b606482015260840161024a565b60298101546102fa90426107be565b6000858152602883016020908152604091829020929092555185815233917f3a44e179d9e19e4401346b6bded52859fff9aa9543bff59d04f48cd5c86056a191015b60405180910390a250505050565b61035261056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506103858261017983610599565b61039c576001600160601b03193360601b166101a1565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfef60205260409020546000805160206107e08339815191529061041b5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081d5c19dc98591948125160721b604482015260640161024a565b6000848152602882016020526040808220919091555133907f01a336412585b8675d19f339f8e31aca56990a1a2f0b4526aa86e2bcfa3660a39061033c9087815260200190565b61046a61056b565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061049d8261017983610599565b6104b4576001600160601b03193360601b166101a1565b6000805160206107e0833981519152603c841180156104d5575062093a8084105b61052b5760405162461bcd60e51b815260206004820152602160248201527f696e76616c696420757067726164652065787069726174696f6e20706572696f6044820152601960fa1b606482015260840161024a565b602981018490556040518481527f8f6d4287e1a643ad848fe5c460fdac7c1294b9ca04b7022b055e7f664cf9efdf9060200160405180910390a150505050565b60006105946040518060400160405280600681526020016553797374656d60d01b815250610599565b905090565b60006105a482610637565b92915050565b60006105b7848484610652565b156105c4575060016105ff565b6105cf848484610694565b156105dc575060016105ff565b6105ee846105e861056b565b84610694565b156105fb575060016105ff565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000815160000361064a57506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205461068b818585610694565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120546000805160206107e083398151915290801580159061070757506000818152601d83016020908152604080832087845290915290205460ff165b15610717576001925050506105ff565b50600095945050505050565b60006020828403121561073557600080fd5b5035919050565b6000815180845260005b8181101561076257602081850181015186830182015201610746565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006107a1608083018561073c565b82810360608401526107b3818561073c565b979650505050505050565b808201808211156105a457634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212200410d8b81eeb45ebedc2d58ca1d4901ac530b3caff84efc5e448189aa57c71cb64736f6c63430008110033", + "nonce": "0x97", "accessList": [] }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0xc8110b2d0162d0111709696d746867fd15aa713a1ae26cbf2d75a410f5203b73", + "hash": "0xeedafdb736d3eee4196d2b3b1f5f147c7f4af2b615a28b6a0864032db5aa4337", "transactionType": "CREATE", "contractName": "MarketFacet", - "contractAddress": "0x54251CB32FCbdF02379984c0f34129D8D77eB53C", + "contractAddress": "0x194A3fDc437b5398E4F334940aBBe278491D1378", "function": null, "arguments": null, "transaction": { @@ -50,37 +88,56 @@ "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", "gas": "0x381d65", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b50613237806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063810a374d1161005b578063810a374d1461017b5780638d81a1d3146101965780639df00480146101b9578063ef706adf146101e757600080fd5b8063012ee17b1461008d5780634579268a146100ba5780634c8198dc1461015257806359e148fc14610173575b600080fd5b6100a061009b366004612fd6565b6101fc565b604080519283526020830191909152015b60405180910390f35b6100cd6100c8366004613008565b610218565b6040516100b19190600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525092915050565b610165610160366004613021565b61022f565b6040519081526020016100b1565b610165610242565b610183610251565b60405161ffff90911681526020016100b1565b6101a96101a4366004613008565b61025b565b60405190151581526020016100b1565b6101cc6101c7366004612fd6565b610266565b604080519384526020840192909252908201526060016100b1565b6101fa6101f5366004613008565b610434565b005b60008061020b86868686610618565b9097909650945050505050565b610220612f73565b61022982610845565b92915050565b600061023b83836108ea565b9392505050565b600061024c610915565b905090565b600061024c61092a565b60006102298261094a565b600080600080356001600160e01b03191661028081610970565b156102c75760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026102d16109ae565b60030154036103225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b600261032c6109ae565b60030155610339336109d2565b6040518060400160405280601381526020017222bc32b1baba32902634b6b4ba1027b33332b960691b8152506103828261037283610a03565b61037b33610a0e565b9190610a23565b6103f35761038f33610a0e565b8260006103a58261039f33610a0e565b90610a7e565b146103c4576103bf6103ba8561039f33610a0e565b610aa9565b6103d5565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016102be9493929190613089565b60006103fe336109d2565b905061040f818c8c8c8c6002610ada565b96509650965050505060016104226109ae565b60030181905550509450945094915050565b6000356001600160e01b03191661044a81610970565b1561048c5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016102be565b60026104966109ae565b60030154036104e75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b60026104f16109ae565b600301556104fe336109d2565b6040518060400160405280600c81526020016b21b0b731b2b61027b33332b960a11b8152506105308261037283610a03565b61053d5761038f33610a0e565b600161054885610845565b61010001511461058d5760405162461bcd60e51b815260206004820152601060248201526f6f66666572206e6f742061637469766560801b60448201526064016102be565b600061059885610845565b519050806105ad6105a833610a0e565b610b67565b146105fa5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206d656d626572206f6620656e746974792063616e2063616e63656c60448201526064016102be565b61060385610b87565b50505060016106106109ae565b600301555050565b60008060006106256109ae565b600086815260228201602090815260408083208a845290915281205491925085905b811561081e5760008381526021850160205260408120600201541561067f576000848152602186016020526040902060070154610682565b60035b905060006106908c83610d1c565b60008681526021880160205260408120600201549192509015806106c65750600086815260218801602052604090206002015485105b6106e35760008681526021880160205260409020600201546106e5565b845b90506106f181866130d0565b945060005b82602001515181101561078a576127108360200151828151811061071c5761071c6130e3565b602002602001015161ffff168361073391906130f9565b61073d9190613110565b610747908b613132565b99508260200151818151811061075f5761075f6130e3565b602002602001015161ffff16896107769190613132565b98508061078281613145565b9150506106f6565b506026870154600160401b900461ffff16156107f2576026870154612710906107be90600160401b900461ffff16836130f9565b6107c89190613110565b6107d2908a613132565b60268801549099506107ef90600160401b900461ffff1689613132565b97505b836107fc81613145565b6000978852602189016020526040909720600a01549694506106479350505050565b6000811161082c5784610836565b6108368186613110565b94505050505094509492505050565b61084d612f73565b60006108576109ae565b60009384526021016020908152604093849020845161016081018652815481526001820154928101929092526002810154948201949094526003840154606082015260048401546080820152600584015460a0820152600684015460c0820152600784015460e082015260088401546101008201526009840154610120820152600a909301546101408401525090919050565b6000806108f56109ae565b600094855260220160209081526040808620948652939052505090205490565b6000806109206109ae565b6020015492915050565b6000806109356109ae565b60260154600160401b900461ffff1692915050565b6000806109556109ae565b60009384526021016020525050604090206008015460011490565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806109dd6109ae565b905060006109ea84610a0e565b6000908152600a90920160205250604090205492915050565b600061022982610f48565b60601b6bffffffffffffffffffffffff191690565b6000610a30848484610f63565b15610a3d5750600161023b565b610a48848484610f85565b15610a555750600161023b565b610a6784610a61610ff5565b84610f85565b15610a745750600161023b565b5060009392505050565b600080610a896109ae565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000806000610aed89898989898961101e565b6000610afd8a8a8a8a8a8a611437565b90508060400151925080606001519150610b258a8a83602001518b8b86600001518c8c611707565b93506000610b316109ae565b600086815260218201602052604090206008015490915060001901610b5957610b59856118cd565b505096509650969350505050565b600080610b726109ae565b6000938452600a016020525050604090205490565b6000610b916109ae565b9050610b9c82611a52565b15610baa57610baa82611ae5565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015610c825760408082015160008581526021850160209081528382208054835260278701825284832060019091015483529052918220805491929091610c7c9084906130d0565b90915550505b600381610100015114610ce5576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103610d17576000838152602183016020526040908190206001015490820151610d1791908190611d7b565b505050565b60408051808201909152606080825260208201526000610d3a6109ae565b6000858152602d82016020908152604080832087845282528083208151815460609481028201850184529281018381529596509394909284928491840182828015610da457602002820191906000526020600020905b815481526020019060010190808311610d90575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610deb5790505b505050919092525050815151919250501580610e47575060208101515181515114155b15610f40576000808052602d8301602090815260408083208784528252918290208251815460609381028201840185529381018481529093919284928491840182828015610eb457602002820191906000526020600020905b815481526020019060010190808311610ea0575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f3457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610efb5790505b50505050508152505090505b949350505050565b60008151600003610f5b57506000919050565b506020015190565b600080610f6f85610b67565b9050610f7c818585610f85565b95945050505050565b600080610f906109ae565b6000868152601f8201602090815260408083208884529091529020549091508015801590610fd957506000818152601d83016020908152604080832087845290915290205460ff165b15610fe95760019250505061023b565b50600095945050505050565b600061024c6040518060400160405280600681526020016553797374656d60d01b815250610a03565b60006110286109ae565b9050861580159061104957506000878152600f8201602052604090205460ff165b6110a65760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b60648201526084016102be565b6000868152600f8201602052604081205460ff16906001600160601b0388161580156110fa57508260130160006110dc8a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b03881615801561115357508460130160006111358a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b905061115f8988612006565b83806111685750825b6111b45760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c6964000000000000000060448201526064016102be565b81806111bd5750805b6112095760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c696400000000000000000060448201526064016102be565b878a036112585760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e000060448201526064016102be565b8380156112625750805b8061127257508280156112725750815b6112dd5760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b60648201526084016102be565b60008a815260158601602090815260408083208e845290915290205489111561133f5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016102be565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a91611379916130d0565b10156113dc5760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b60648201526084016102be565b60028614806113eb5750600386145b61142a5760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b60448201526064016102be565b5050505050505050505050565b6114626040518060800160405280600081526020016000815260200160008152602001600081525090565b600061146c6109ae565b84835260208301879052905060006001600160601b0386161580156114b9575081601301600061149b88611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b6020830151158015906114d6575080806114d65750825115155b156116fb57600086815260228301602090815260408083208b84529091528120549081900361150557506116fb565b6000818152602184016020908152604090912060058101546002909101549186015186519192918291908461153a84846130f9565b6115449190613132565b61154e9190613132565b6115589190613132565b6115629190613132565b865161156e90846130f9565b111561157c575050506116fb565b5050600080831561162957602080870151600085815260218801909252604090912060050154106115b15785602001516115c6565b60008381526021860160205260409020600501545b600084815260218701602052604090206005810154600290910154919350906115ef90846130f9565b6115f99190613110565b9050600061160b88858f85878a612153565b9050808760400181815161161f9190613132565b9052506116be9050565b855160008481526021870160205260409020600201541061164b578551611660565b60008381526021860160205260409020600201545b6000848152602187016020526040902060028101546005909101549192509061168990836130f9565b6116939190613110565b915060006116a588858f85878a612153565b905080876060018181516116b99190613132565b905250505b81866020018181516116d091906130d0565b905250855181116116ed5785516116e89082906130d0565b6116f0565b60005b8652506114bc915050565b50509695505050505050565b6000806117126109ae565b90506000816020016000815461172790613145565b91829055509050611736612f73565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080611779575060018a105b1561178b5760036101008201526117c4565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c92906117be908490613132565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d8961010001516040516118b696959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b60006118d76109ae565b90506118e282611a52565b1561192f5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c6973740000000060448201526064016102be565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061197c575061197c8783612395565b1561199c575060008181526021860160205260409020600a015490611968565b8080156119cf576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506119f3565b60008681526022880160209081526040808320888452909152902080549089905593505b8315611a1c5760008481526021880160205260408082206009018a90558982529020600a018490555b600086815260238801602090815260408083208884529091528120805491611a4383613145565b91905055505050505050505050565b600080611a5d6109ae565b600084815260218201602052604090206001810154600490910154919250908415801590610f7c57506000858152602184016020526040902060090154151580611ab9575060008581526021840160205260409020600a015415155b80610f7c5750600091825260229290920160209081526040808320938352929052205491909114919050565b6000611aef6109ae565b9050611afa82611a52565b611b465760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c697374000000000000000060448201526064016102be565b600082815260218201602090815260408083206001810154600490910154818552602386018452828520818652909352922054611bc55760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f74206578697374000060448201526064016102be565b600082815260228401602090815260408083208484529091529020548414611c6a576000848152602184016020526040808220600901548083529120600a01548514611c475760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600a9081015493835291200155611c98565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415611d30576000848152602184016020526040808220600a01548083529120600901548514611d115760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a018390558483526023860182528083208484529091528120805491611d708361315e565b919050555050505050565b6000611d856109ae565b60008481526015820160209081526040808320888452909152902054909150821115611dff5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016102be565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391611e39916130d0565b1015611ead5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016102be565b611eb784846123f5565b600083815260168201602052604081208054849290611ed79084906130d0565b90915550506000838152601582016020908152604080832087845290915281208054849290611f079084906130d0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091611f5091613175565b60405180910390a36000838152601582016020908152604080832087845290915290819020549051339186916000805160206131e283398151915291611f98918891906131a8565b60405180910390a350505050565b60006001600160601b03821615611fff5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016102be565b5060601c90565b6001600160801b038211156120675760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b60648201526084016102be565b6001600160801b038111156120be5760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d697460448201526064016102be565b600082116121075760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b60448201526064016102be565b6000811161214f5760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b60448201526064016102be565b5050565b60008061215e6109ae565b905061216b8786866124a8565b60008781526021820160205260408120600701546003148061218d5750600389145b1561219a5750600361219e565b5060025b60006003821480156121c55750600089815260218401602052604090206001810154905414155b156121e1575060008881526021830160205260409020546121e4565b50865b841561221a576000898152602184016020526040902080546001909101546122139184918491908c908c6125cd565b9350612246565b6000898152602184016020526040902080546004909101546122439184918491908c908b6125cd565b93505b60008981526021840160209081526040808320805484526027870183528184206001909101548452909152812080548992906122839084906130d0565b90915550506000898152602184016020526040902080546001909101546122ad91908a908a6127a8565b506000898152602184016020526040902080546004909101546122d2918a91896127a8565b5050506000878152602182016020526040902060020154600111156123125760008781526021820160205260409020600360089091015561231287610b87565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b6000806123a06109ae565b6000858152602182016020526040808220600280820154600592830154898652939094209081015491015493945091929091906123dd84826130f9565b6123e783856130f9565b101598975050505050505050565b60006123ff6109ae565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561245a57602002820191906000526020600020905b815481526020019060010190808311612446575b5050505050905060005b81518110156124a1576124918585848481518110612484576124846130e3565b6020026020010151612a3c565b61249a81613145565b9050612464565b5050505050565b60006124b26109ae565b90506000806124c086612cb9565b915091506124ce8585612006565b80602001518411156125225760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c61726765000060448201526064016102be565b81602001518511156125765760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c6172676560448201526064016102be565b84826020015161258691906130d0565b60008781526021850160209081526040909120600201919091558101516125ae9085906130d0565b6000968752602190930160205250506040909320600501929092555050565b6000806125d86109ae565b905060006125e6888a610d1c565b6026830154909150600090600160401b900461ffff16156126945760268301546127109061261f90600160401b900461ffff16876130f9565b6126299190613110565b90506126358185613132565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8884600260405161267e939291909283526020830191909152604082015260600190565b60405180910390a3612692878988846127a8565b505b81515160005b8181101561279957612710846020015182815181106126bb576126bb6130e3565b602002602001015161ffff16886126d291906130f9565b6126dc9190613110565b925082156127875761270d8b856000015183815181106126fe576126fe6130e3565b60200260200101518a866127a8565b506127188387613132565b955083600001518181518110612730576127306130e3565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a86600260405161277e939291909283526020830191909152604082015260600190565b60405180910390a35b8061279181613145565b91505061269a565b50505050509695505050505050565b6000806127b36109ae565b600085815260158201602090815260408083208a84529091529020549091508311156128315760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016102be565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161286b916130d0565b10156128df5760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016102be565b6128e986856123f5565b60008481526015820160209081526040808320898452909152812080548592906129149084906130d0565b90915550506000848152601582016020908152604080832088845290915281208054859290612944908490613132565b909155506129589050868686866000612d2f565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339188916000805160206131e28339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339187916000805160206131e28339815191529181900360a00190a350600195945050505050565b6000612a466109ae565b90506000612a786040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610a03565b60008581526015840160209081526040808320898452909152812054919250612aa086612f03565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190612aea85858585612f23565b90508015612cad576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290612b25908490613132565b90915550506000888152601588016020908152604080832089845290915281208054839290612b559084906130d0565b9091555050600088815260158801602090815260408083208d845290915281208054839290612b85908490613132565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206131e28339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206131e28339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000612ceb6109ae565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b6000612d396109ae565b90506000612d4685612f03565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612da157602002820191906000526020600020905b815481526020019060010190808311612d8d575b5050505050905060005b8151811015612ef8576000828281518110612dc857612dc86130e3565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612dfe89878484612f23565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612e36908490613132565b90915550508b15612e7a5760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612e749084906130d0565b90915550505b8715612ee45760008a8152601b8801602090815260408083208684529091529020548690612ea9908b906130f9565b612eb39190613110565b60008b8152601b89016020908152604080832087845290915281208054909190612ede908490613132565b90915550505b50505080612ef190613145565b9050612dab565b505050505050505050565b600080612f0e6109ae565b60009384526016016020525050604090205490565b600080612f3086856130f9565b905060008515612f4957612f448683613110565b612f4c565b60005b905080841015612f6557612f6084826130d0565b612f68565b60005b979650505050505050565b60405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008060008060808587031215612fec57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561301a57600080fd5b5035919050565b6000806040838503121561303457600080fd5b50508035926020909101359150565b6000815180845260005b818110156130695760208185018101518683018201520161304d565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006130a86080830185613043565b8281036060840152612f688185613043565b634e487b7160e01b600052601160045260246000fd5b81810381811115610229576102296130ba565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610229576102296130ba565b60008261312d57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610229576102296130ba565b600060018201613157576131576130ba565b5060010190565b60008161316d5761316d6130ba565b506000190190565b81815260406020820152600061023b60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b828152816020820152606060408201526000610f4060608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220ea3cc5d61cbab88fcd026735a05c7832a30762313d92d1c71876f8b63846a93b64736f6c63430008110033", - "nonce": "0x8d", + "data": "0x608060405234801561001057600080fd5b50613237806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063810a374d1161005b578063810a374d1461017b5780638d81a1d3146101965780639df00480146101b9578063ef706adf146101e757600080fd5b8063012ee17b1461008d5780634579268a146100ba5780634c8198dc1461015257806359e148fc14610173575b600080fd5b6100a061009b366004612fd6565b6101fc565b604080519283526020830191909152015b60405180910390f35b6100cd6100c8366004613008565b610218565b6040516100b19190600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525092915050565b610165610160366004613021565b61022f565b6040519081526020016100b1565b610165610242565b610183610251565b60405161ffff90911681526020016100b1565b6101a96101a4366004613008565b61025b565b60405190151581526020016100b1565b6101cc6101c7366004612fd6565b610266565b604080519384526020840192909252908201526060016100b1565b6101fa6101f5366004613008565b610434565b005b60008061020b86868686610618565b9097909650945050505050565b610220612f73565b61022982610845565b92915050565b600061023b83836108ea565b9392505050565b600061024c610915565b905090565b600061024c61092a565b60006102298261094a565b600080600080356001600160e01b03191661028081610970565b156102c75760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026102d16109ae565b60030154036103225760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b600261032c6109ae565b60030155610339336109d2565b6040518060400160405280601381526020017222bc32b1baba32902634b6b4ba1027b33332b960691b8152506103828261037283610a03565b61037b33610a0e565b9190610a23565b6103f35761038f33610a0e565b8260006103a58261039f33610a0e565b90610a7e565b146103c4576103bf6103ba8561039f33610a0e565b610aa9565b6103d5565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016102be9493929190613089565b60006103fe336109d2565b905061040f818c8c8c8c6002610ada565b96509650965050505060016104226109ae565b60030181905550509450945094915050565b6000356001600160e01b03191661044a81610970565b1561048c5760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016102be565b60026104966109ae565b60030154036104e75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102be565b60026104f16109ae565b600301556104fe336109d2565b6040518060400160405280600c81526020016b21b0b731b2b61027b33332b960a11b8152506105308261037283610a03565b61053d5761038f33610a0e565b600161054885610845565b61010001511461058d5760405162461bcd60e51b815260206004820152601060248201526f6f66666572206e6f742061637469766560801b60448201526064016102be565b600061059885610845565b519050806105ad6105a833610a0e565b610b67565b146105fa5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206d656d626572206f6620656e746974792063616e2063616e63656c60448201526064016102be565b61060385610b87565b50505060016106106109ae565b600301555050565b60008060006106256109ae565b600086815260228201602090815260408083208a845290915281205491925085905b811561081e5760008381526021850160205260408120600201541561067f576000848152602186016020526040902060070154610682565b60035b905060006106908c83610d1c565b60008681526021880160205260408120600201549192509015806106c65750600086815260218801602052604090206002015485105b6106e35760008681526021880160205260409020600201546106e5565b845b90506106f181866130d0565b945060005b82602001515181101561078a576127108360200151828151811061071c5761071c6130e3565b602002602001015161ffff168361073391906130f9565b61073d9190613110565b610747908b613132565b99508260200151818151811061075f5761075f6130e3565b602002602001015161ffff16896107769190613132565b98508061078281613145565b9150506106f6565b506026870154600160401b900461ffff16156107f2576026870154612710906107be90600160401b900461ffff16836130f9565b6107c89190613110565b6107d2908a613132565b60268801549099506107ef90600160401b900461ffff1689613132565b97505b836107fc81613145565b6000978852602189016020526040909720600a01549694506106479350505050565b6000811161082c5784610836565b6108368186613110565b94505050505094509492505050565b61084d612f73565b60006108576109ae565b60009384526021016020908152604093849020845161016081018652815481526001820154928101929092526002810154948201949094526003840154606082015260048401546080820152600584015460a0820152600684015460c0820152600784015460e082015260088401546101008201526009840154610120820152600a909301546101408401525090919050565b6000806108f56109ae565b600094855260220160209081526040808620948652939052505090205490565b6000806109206109ae565b6020015492915050565b6000806109356109ae565b60260154600160401b900461ffff1692915050565b6000806109556109ae565b60009384526021016020525050604090206008015460011490565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806109dd6109ae565b905060006109ea84610a0e565b6000908152600a90920160205250604090205492915050565b600061022982610f48565b60601b6bffffffffffffffffffffffff191690565b6000610a30848484610f63565b15610a3d5750600161023b565b610a48848484610f85565b15610a555750600161023b565b610a6784610a61610ff5565b84610f85565b15610a745750600161023b565b5060009392505050565b600080610a896109ae565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000806000610aed89898989898961101e565b6000610afd8a8a8a8a8a8a611437565b90508060400151925080606001519150610b258a8a83602001518b8b86600001518c8c611707565b93506000610b316109ae565b600086815260218201602052604090206008015490915060001901610b5957610b59856118cd565b505096509650969350505050565b600080610b726109ae565b6000938452600a016020525050604090205490565b6000610b916109ae565b9050610b9c82611a52565b15610baa57610baa82611ae5565b60008281526021820160209081526040918290208251610160810184528154815260018201549281019290925260028101549282018390526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a01546101408201529015610c825760408082015160008581526021850160209081528382208054835260278701825284832060019091015483529052918220805491929091610c7c9084906130d0565b90915550505b600381610100015114610ce5576000838152602183016020908152604091829020600260089091015582518382015192519283529185917fc5ccc63c607b224c3650887a47d3852b5acbc0d610aa5ee44c108c042cce8631910160405180910390a35b60038160e0015103610d17576000838152602183016020526040908190206001015490820151610d1791908190611d7b565b505050565b60408051808201909152606080825260208201526000610d3a6109ae565b6000858152602d82016020908152604080832087845282528083208151815460609481028201850184529281018381529596509394909284928491840182828015610da457602002820191906000526020600020905b815481526020019060010190808311610d90575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610e2457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610deb5790505b505050919092525050815151919250501580610e47575060208101515181515114155b15610f40576000808052602d8301602090815260408083208784528252918290208251815460609381028201840185529381018481529093919284928491840182828015610eb457602002820191906000526020600020905b815481526020019060010190808311610ea0575b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015610f3457602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610efb5790505b50505050508152505090505b949350505050565b60008151600003610f5b57506000919050565b506020015190565b600080610f6f85610b67565b9050610f7c818585610f85565b95945050505050565b600080610f906109ae565b6000868152601f8201602090815260408083208884529091529020549091508015801590610fd957506000818152601d83016020908152604080832087845290915290205460ff165b15610fe95760019250505061023b565b50600095945050505050565b600061024c6040518060400160405280600681526020016553797374656d60d01b815250610a03565b60006110286109ae565b9050861580159061104957506000878152600f8201602052604090205460ff165b6110a65760405162461bcd60e51b815260206004820152602860248201527f6f66666572206d757374206265206d61646520627920616e206578697374696e6044820152676720656e7469747960c01b60648201526084016102be565b6000868152600f8201602052604081205460ff16906001600160601b0388161580156110fa57508260130160006110dc8a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b6000878152600f8501602052604081205491925060ff909116906001600160601b03881615801561115357508460130160006111358a611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b905061115f8988612006565b83806111685750825b6111b45760405162461bcd60e51b815260206004820152601860248201527f73656c6c20746f6b656e206d7573742062652076616c6964000000000000000060448201526064016102be565b81806111bd5750805b6112095760405162461bcd60e51b815260206004820152601760248201527f62757920746f6b656e206d7573742062652076616c696400000000000000000060448201526064016102be565b878a036112585760405162461bcd60e51b815260206004820152601e60248201527f63616e6e6f742073656c6c20616e64206275792073616d6520746f6b656e000060448201526064016102be565b8380156112625750805b8061127257508280156112725750815b6112dd5760405162461bcd60e51b815260206004820152603660248201527f6d757374206265206f6e652070617274696369706174696f6e20746f6b656e2060448201527530b7321037b7329032bc3a32b93730b6103a37b5b2b760511b60648201526084016102be565b60008a815260158601602090815260408083208e845290915290205489111561133f5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016102be565b60008b815260278601602090815260408083208d84528252808320546015890183528184208f8552909252909120548a91611379916130d0565b10156113dc5760405162461bcd60e51b815260206004820152602c60248201527f696e73756666696369656e742062616c616e636520617661696c61626c652c2060448201526b199d5b991cc81b1bd8dad95960a21b60648201526084016102be565b60028614806113eb5750600386145b61142a5760405162461bcd60e51b815260206004820152601060248201526f199959481d1e5c19481a5b9d985b1a5960821b60448201526064016102be565b5050505050505050505050565b6114626040518060800160405280600081526020016000815260200160008152602001600081525090565b600061146c6109ae565b84835260208301879052905060006001600160601b0386161580156114b9575081601301600061149b88611fa6565b6001600160a01b0316815260208101919091526040016000205460ff165b90505b6020830151158015906114d6575080806114d65750825115155b156116fb57600086815260228301602090815260408083208b84529091528120549081900361150557506116fb565b6000818152602184016020908152604090912060058101546002909101549186015186519192918291908461153a84846130f9565b6115449190613132565b61154e9190613132565b6115589190613132565b6115629190613132565b865161156e90846130f9565b111561157c575050506116fb565b5050600080831561162957602080870151600085815260218801909252604090912060050154106115b15785602001516115c6565b60008381526021860160205260409020600501545b600084815260218701602052604090206005810154600290910154919350906115ef90846130f9565b6115f99190613110565b9050600061160b88858f85878a612153565b9050808760400181815161161f9190613132565b9052506116be9050565b855160008481526021870160205260409020600201541061164b578551611660565b60008381526021860160205260409020600201545b6000848152602187016020526040902060028101546005909101549192509061168990836130f9565b6116939190613110565b915060006116a588858f85878a612153565b905080876060018181516116b99190613132565b905250505b81866020018181516116d091906130d0565b905250855181116116ed5785516116e89082906130d0565b6116f0565b60005b8652506114bc915050565b50509695505050505050565b6000806117126109ae565b90506000816020016000815461172790613145565b91829055509050611736612f73565b8b8152602081018b9052604081018a9052606081018990526080810188905260a0810187905260c0810186905260e081018590526001871080611779575060018a105b1561178b5760036101008201526117c4565b600161010082015260008c815260278401602090815260408083208e8452909152812080548c92906117be908490613132565b90915550505b80836021016000848152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a01559050508a8160000151837fb5cf98fe77c5b4c06e3bb6a62e9589418ff5d382b8da474d04cdc38e223a18d18d8d8d8d8d8961010001516040516118b696959493929190958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405180910390a4509a9950505050505050505050565b60006118d76109ae565b90506118e282611a52565b1561192f5760405162461bcd60e51b815260206004820152601c60248201527f6f6666657220616c726561647920696e20736f72746564206c6973740000000060448201526064016102be565b60008281526021820160209081526040808320600181015460049091015481855260228601845282852081865290935290832054909290815b811580159061197c575061197c8783612395565b1561199c575060008181526021860160205260409020600a015490611968565b8080156119cf576000818152602188016020526040808220600a018054908b90558a8352912060090182905593506119f3565b60008681526022880160209081526040808320888452909152902080549089905593505b8315611a1c5760008481526021880160205260408082206009018a90558982529020600a018490555b600086815260238801602090815260408083208884529091528120805491611a4383613145565b91905055505050505050505050565b600080611a5d6109ae565b600084815260218201602052604090206001810154600490910154919250908415801590610f7c57506000858152602184016020526040902060090154151580611ab9575060008581526021840160205260409020600a015415155b80610f7c5750600091825260229290920160209081526040808320938352929052205491909114919050565b6000611aef6109ae565b9050611afa82611a52565b611b465760405162461bcd60e51b815260206004820152601860248201527f6f66666572206e6f7420696e20736f72746564206c697374000000000000000060448201526064016102be565b600082815260218201602090815260408083206001810154600490910154818552602386018452828520818652909352922054611bc55760405162461bcd60e51b815260206004820152601e60248201527f746f6b656e2070616972206c69737420646f6573206e6f74206578697374000060448201526064016102be565b600082815260228401602090815260408083208484529091529020548414611c6a576000848152602184016020526040808220600901548083529120600a01548514611c475760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600a9081015493835291200155611c98565b60008481526021840160209081526040808320600a0154858452602287018352818420858552909252909120555b60008481526021840160205260409020600a015415611d30576000848152602184016020526040808220600a01548083529120600901548514611d115760405162461bcd60e51b81526020600482015260116024820152701cdbdc9d0818da1958dac819985a5b1959607a1b60448201526064016102be565b6000858152602185016020526040808220600990810154938352912001555b6000848152602184016020908152604080832060098101849055600a018390558483526023860182528083208484529091528120805491611d708361315e565b919050555050505050565b6000611d856109ae565b60008481526015820160209081526040808320888452909152902054909150821115611dff5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016102be565b60008481526027820160209081526040808320868452825280832054601585018352818420888552909252909120548391611e39916130d0565b1015611ead5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016102be565b611eb784846123f5565b600083815260168201602052604081208054849290611ed79084906130d0565b90915550506000838152601582016020908152604080832087845290915281208054849290611f079084906130d0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091611f5091613175565b60405180910390a36000838152601582016020908152604080832087845290915290819020549051339186916000805160206131e283398151915291611f98918891906131a8565b60405180910390a350505050565b60006001600160601b03821615611fff5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016102be565b5060601c90565b6001600160801b038211156120675760405162461bcd60e51b815260206004820152602160248201527f73656c6c20616d6f756e7420657863656564732075696e74313238206c696d696044820152601d60fa1b60648201526084016102be565b6001600160801b038111156120be5760405162461bcd60e51b815260206004820181905260248201527f62757920616d6f756e7420657863656564732075696e74313238206c696d697460448201526064016102be565b600082116121075760405162461bcd60e51b8152602060048201526016602482015275073656c6c20616d6f756e74206d757374206265203e360541b60448201526064016102be565b6000811161214f5760405162461bcd60e51b8152602060048201526015602482015274062757920616d6f756e74206d757374206265203e3605c1b60448201526064016102be565b5050565b60008061215e6109ae565b905061216b8786866124a8565b60008781526021820160205260408120600701546003148061218d5750600389145b1561219a5750600361219e565b5060025b60006003821480156121c55750600089815260218401602052604090206001810154905414155b156121e1575060008881526021830160205260409020546121e4565b50865b841561221a576000898152602184016020526040902080546001909101546122139184918491908c908c6125cd565b9350612246565b6000898152602184016020526040902080546004909101546122439184918491908c908b6125cd565b93505b60008981526021840160209081526040808320805484526027870183528184206001909101548452909152812080548992906122839084906130d0565b90915550506000898152602184016020526040902080546001909101546122ad91908a908a6127a8565b506000898152602184016020526040902080546004909101546122d2918a91896127a8565b5050506000878152602182016020526040902060020154600111156123125760008781526021820160205260409020600360089091015561231287610b87565b6000878152602182016020908152604091829020600181015460028201546004830154600584015460089094015486519283529482015293840191909152606083019190915290879089907ff6cd95e7491084abac93a47460beaee4f922948104ea1fe7e3fc7e4481c3fce49060800160405180910390a4509695505050505050565b6000806123a06109ae565b6000858152602182016020526040808220600280820154600592830154898652939094209081015491015493945091929091906123dd84826130f9565b6123e783856130f9565b101598975050505050505050565b60006123ff6109ae565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561245a57602002820191906000526020600020905b815481526020019060010190808311612446575b5050505050905060005b81518110156124a1576124918585848481518110612484576124846130e3565b6020026020010151612a3c565b61249a81613145565b9050612464565b5050505050565b60006124b26109ae565b90506000806124c086612cb9565b915091506124ce8585612006565b80602001518411156125225760405162461bcd60e51b815260206004820152601e60248201527f7265717565737465642062757920616d6f756e7420746f6f206c61726765000060448201526064016102be565b81602001518511156125765760405162461bcd60e51b815260206004820181905260248201527f63616c63756c617465642073656c6c20616d6f756e7420746f6f206c6172676560448201526064016102be565b84826020015161258691906130d0565b60008781526021850160209081526040909120600201919091558101516125ae9085906130d0565b6000968752602190930160205250506040909320600501929092555050565b6000806125d86109ae565b905060006125e6888a610d1c565b6026830154909150600090600160401b900461ffff16156126945760268301546127109061261f90600160401b900461ffff16876130f9565b6126299190613110565b90506126358185613132565b935087877f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8884600260405161267e939291909283526020830191909152604082015260600190565b60405180910390a3612692878988846127a8565b505b81515160005b8181101561279957612710846020015182815181106126bb576126bb6130e3565b602002602001015161ffff16886126d291906130f9565b6126dc9190613110565b925082156127875761270d8b856000015183815181106126fe576126fe6130e3565b60200260200101518a866127a8565b506127188387613132565b955083600001518181518110612730576127306130e3565b60200260200101518b7f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd8a86600260405161277e939291909283526020830191909152604082015260600190565b60405180910390a35b8061279181613145565b91505061269a565b50505050509695505050505050565b6000806127b36109ae565b600085815260158201602090815260408083208a84529091529020549091508311156128315760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016102be565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161286b916130d0565b10156128df5760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016102be565b6128e986856123f5565b60008481526015820160209081526040808320898452909152812080548592906129149084906130d0565b90915550506000848152601582016020908152604080832088845290915281208054859290612944908490613132565b909155506129589050868686866000612d2f565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339188916000805160206131e28339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339187916000805160206131e28339815191529181900360a00190a350600195945050505050565b6000612a466109ae565b90506000612a786040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610a03565b60008581526015840160209081526040808320898452909152812054919250612aa086612f03565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190612aea85858585612f23565b90508015612cad576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290612b25908490613132565b90915550506000888152601588016020908152604080832089845290915281208054839290612b559084906130d0565b9091555050600088815260158801602090815260408083208d845290915281208054839290612b85908490613132565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206131e28339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206131e28339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b604080518082019091526000808252602082015260408051808201909152600080825260208201526000612ceb6109ae565b600085815260219091016020818152604083206001810154875260028101548783015260048101548652969092528152600590940154938201939093529092909150565b6000612d396109ae565b90506000612d4685612f03565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015612da157602002820191906000526020600020905b815481526020019060010190808311612d8d575b5050505050905060005b8151811015612ef8576000828281518110612dc857612dc86130e3565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090612dfe89878484612f23565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190612e36908490613132565b90915550508b15612e7a5760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290612e749084906130d0565b90915550505b8715612ee45760008a8152601b8801602090815260408083208684529091529020548690612ea9908b906130f9565b612eb39190613110565b60008b8152601b89016020908152604080832087845290915281208054909190612ede908490613132565b90915550505b50505080612ef190613145565b9050612dab565b505050505050505050565b600080612f0e6109ae565b60009384526016016020525050604090205490565b600080612f3086856130f9565b905060008515612f4957612f448683613110565b612f4c565b60005b905080841015612f6557612f6084826130d0565b612f68565b60005b979650505050505050565b60405180610160016040528060008019168152602001600080191681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008060008060808587031215612fec57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561301a57600080fd5b5035919050565b6000806040838503121561303457600080fd5b50508035926020909101359150565b6000815180845260005b818110156130695760208185018101518683018201520161304d565b506000602082860101526020601f19601f83011685010191505092915050565b8481528360208201526080604082015260006130a86080830185613043565b8281036060840152612f688185613043565b634e487b7160e01b600052601160045260246000fd5b81810381811115610229576102296130ba565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610229576102296130ba565b60008261312d57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610229576102296130ba565b600060018201613157576131576130ba565b5060010190565b60008161316d5761316d6130ba565b506000190190565b81815260406020820152600061023b60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b828152816020820152606060408201526000610f4060608301600d81526c2fb4b73a32b93730b6213ab93760991b60208201526040019056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220c641a6aef74c0fc0c5fbf30aa6deac4d54789e23617c82e946df8fed43e31e3e64736f6c63430008110033", + "nonce": "0x98", "accessList": [] }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0xedb202c5bd010e085c42cafb1522e98688b9202525f6f9380f22244c20f1e48e", + "hash": "0x2bfb4809138835d58f8dc033de004aab841dbfdbf32d0086123c2421d1c59778", + "transactionType": "CREATE", + "contractName": "NaymsTokenFacet", + "contractAddress": "0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", + "gas": "0x251df", + "value": "0x0", + "data": "0x608060405234801561001057600080fd5b50610126806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806318160ddd14603757806370a0823114604f575b600080fd5b603d6094565b60405190815260200160405180910390f35b603d605a36600460c2565b6001600160a01b031660009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcf602052604090205490565b600060bd7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcd5490565b905090565b60006020828403121560d357600080fd5b81356001600160a01b038116811460e957600080fd5b939250505056fea2646970667358221220933e33de5f2266d8a1d91e9925c2495e5176d45518c3d3f70b459965df517d3a64736f6c63430008110033", + "nonce": "0x99", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1abb1f61ba05344031110eb18ef39ece504e3f5a05745e8f26fdde9c0002ddce", "transactionType": "CREATE", "contractName": "SimplePolicyFacet", - "contractAddress": "0x80238Be1cb78C0b701E1aD7D9815Ac91d9793049", + "contractAddress": "0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030", "function": null, "arguments": null, "transaction": { "type": "0x02", "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", - "gas": "0x2c3793", + "gas": "0x2cc958", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b5061275d806100206000396000f3fe608060405234801561001057600080fd5b506004361061007c5760003560e01c80637d2926051161005b5780637d292605146100d2578063c3ab48cb146100e5578063e8b3fb3c1461015d578063f3253b5f1461017057600080fd5b8062bae173146100815780631add96f61461009657806323eaabe3146100bf575b600080fd5b61009461008f3660046123d5565b610191565b005b6100a96100a43660046123ee565b6101da565b6040516100b69190612410565b60405180910390f35b6100946100cd3660046123d5565b61020f565b6100946100e03660046123ee565b6102df565b6100f86100f33660046123d5565b610386565b6040516100b691906000610100820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015260a0830151151560a083015260c083015160c083015260e083015160e083015292915050565b61009461016b36600461249e565b610475565b61018361017e3660046124d0565b610500565b6040519081526020016100b6565b6000356001600160e01b0319166101a781610519565b156101cd5760405162461bcd60e51b81526004016101c49061250b565b60405180910390fd5b6101d682610557565b5050565b6101fe60405180606001604052806000815260200160008152602001606081525090565b61020883836105e1565b9392505050565b610217610a52565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b8152506102608261025083610a80565b61025933610a91565b9190610aa6565b6102d15761026d33610a91565b8260006102838261027d33610a91565b90610b01565b146102a25761029d6102988561027d33610a91565b610b2c565b6102b3565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101c4949392919061257d565b6102da83610b5d565b505050565b6000356001600160e01b0319166102f581610519565b156103125760405162461bcd60e51b81526004016101c49061250b565b82604051806040016040528060128152602001715061792053696d706c65205072656d69756d60701b81525061034b8261025083610a80565b6103585761026d33610a91565b600061036333610a91565b9050600061037082610c1f565b905061037d818888610c3f565b50505050505050565b6103d56040518061010001604052806000815260200160008152602001600080191681526020016000815260200160001515815260200160001515815260200160008152602001600081525090565b6040518061010001604052806103ea84610ddd565b5181526020016103f984610ddd565b60200151815260200161040b84610ddd565b60400151815260200161041d84610ddd565b60600151815260200161042f84610ddd565b608001511515815260200161044384610ddd565b60a001511515815260200161045784610ddd565b60c00151815260200161046984610ddd565b60e00151905292915050565b6000356001600160e01b03191661048b81610519565b156104a85760405162461bcd60e51b81526004016101c49061250b565b6104b133610f70565b6040518060400160405280601081526020016f5061792053696d706c6520436c61696d60801b8152506104e78261025083610a80565b6104f45761026d33610a91565b61037d87878787610fa1565b600061050f8686868686611292565b9695505050505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b6000610561611303565b60008381526012820160205260409020600481015491925090610100900460ff16158015610593575080600101544210155b80156105a35750600481015460ff165b156102da576105b183611327565b60405183907f5ef763899e3efa30fdc82a86b8d4d4a48974ced5248d778d1c4d322160ecfa0190600090a2505050565b61060560405180606001604052806000815260200160008152602001606081525090565b600061060f611303565b600085815260128201602090815260408083206007018054825181850281018501909352808352949550929390929183018282801561066d57602002820191906000526020600020905b815481526020019060010190808311610659575b5050505050905060008260120160008781526020019081526020016000206008018054806020026020016040519081016040528092919081815260200182805480156106d857602002820191906000526020600020905b8154815260200190600101908083116106c4575b5050505050905060008251905060006106f088610c1f565b905060006106ff8260016113f4565b805151909150600061071185836125c4565b61071b90826125c4565b90508067ffffffffffffffff811115610736576107366125d7565b60405190808252806020026020018201604052801561078f57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816107545790505b5060408a01526000805b868110156108ce576127108882815181106107b6576107b66125ed565b60200260200101518d6107c99190612603565b6107d3919061261a565b91508881815181106107e7576107e76125ed565b60200260200101518b604001518281518110610805576108056125ed565b60200260200101516020018181525050878181518110610827576108276125ed565b60200260200101518b604001518281518110610845576108456125ed565b60200260200101516080018181525050818b60400151828151811061086c5761086c6125ed565b6020026020010151606001818152505087818151811061088e5761088e6125ed565b60200260200101518b6020018181516108a791906125c4565b9052508a5182908c906108bb9083906125c4565b9052506108c78161263c565b9050610799565b5060005b83811015610a4257612710856020015182815181106108f3576108f36125ed565b602002602001015161ffff168d61090a9190612603565b610914919061261a565b91508460000151818151811061092c5761092c6125ed565b60200260200101518b60400151828961094591906125c4565b81518110610955576109556125ed565b602002602001015160200181815250508460200151818151811061097b5761097b6125ed565b602002602001015161ffff168b60400151828961099891906125c4565b815181106109a8576109a86125ed565b60209081029190910101516080015260408b015182906109c8838a6125c4565b815181106109d8576109d86125ed565b60200260200101516060018181525050846020015181815181106109fe576109fe6125ed565b602002602001015161ffff168b602001818151610a1b91906125c4565b9052508a5182908c90610a2f9083906125c4565b905250610a3b8161263c565b90506108d2565b5050505050505050505092915050565b6000610a7b6040518060400160405280600681526020016553797374656d60d01b815250610a80565b905090565b6000610a8b82611620565b92915050565b60601b6bffffffffffffffffffffffff191690565b6000610ab384848461163b565b15610ac057506001610208565b610acb84848461165d565b15610ad857506001610208565b610aea84610ae4610a52565b8461165d565b15610af757506001610208565b5060009392505050565b600080610b0c611303565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000610b67611303565b60008381526012820160205260409020600481015491925090610100900460ff1615610bd55760405162461bcd60e51b815260206004820152601860248201527f506f6c69637920616c72656164792063616e63656c6c6564000000000000000060448201526064016101c4565b610bde83611327565b60048101805461ff00191661010017905560405183907fb9f06c2aafb33d6e7e10925f097be026995386c2e7c3b05f336fe417c1b9c61e90600090a2505050565b600080610c2a611303565b6000938452600a016020525050604090205490565b60008111610c885760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081c1c995b5a5d5b48185b5bdd5b9d60521b60448201526064016101c4565b6000610c92611303565b6000858152600f8201602052604090205490915060ff16610cc95760405163e1f8801360e01b8152600481018590526024016101c4565b600083815260108201602052604090205460ff16610cfd576040516307c579f360e21b8152600481018490526024016101c4565b6000610d0884610c1f565b60008581526012840160205260409020600481015491925090610100900460ff1615610d6c5760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101c4565b610d7c86838360020154876116cd565b50610d878585611961565b83816006016000828254610d9b91906125c4565b909155505060405184815285907fd44880514d72bd9d26e63603fa8448ea9bac29c0099e74e0a2c80a3ff4b39d829060200160405180910390a2505050505050565b610e3a60405180610140016040528060008152602001600081526020016000801916815260200160008152602001600015158152602001600015158152602001600081526020016000815260200160608152602001606081525090565b6000610e44611303565b60008481526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e08301526007830180548651818702810187019097528087529697509195929490860193909290830182828015610f0757602002820191906000526020600020905b815481526020019060010190808311610ef3575b5050505050815260200160088201805480602002602001604051908101604052809291908181526020018280548015610f5f57602002820191906000526020600020905b815481526020019060010190808311610f4b575b505050505081525050915050919050565b600080610f7b611303565b90506000610f8884610a91565b6000908152600a90920160205250604090205492915050565b6000610fab611303565b905060008211610ff45760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a590818db185a5b48185b5bdd5b9d60621b60448201526064016101c4565b61102e83856110296040518060400160405280600f81526020016e496e7375726564205061727469657360881b815250610a80565b61165d565b6110715760405162461bcd60e51b81526020600482015260146024820152736e6f7420616e20696e737572656420706172747960601b60448201526064016101c4565b600084815260128201602052604090206004810154610100900460ff16156110d15760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101c4565b60058101546110e081856125c4565b8260030154101561112a5760405162461bcd60e51b8152602060048201526014602482015273195e18d959591cc81c1bdb1a58de481b1a5b5a5d60621b60448201526064016101c4565b8382600501600082825461113e91906125c4565b909155506000905061114f87610c1f565b6000818152601186016020908152604091829020825160a081018452815481526001820154928101839052600282015493810193909352600381015460608401526004015460ff161515608083015291925090612710906111b09088612603565b6111ba919061261a565b6000838152602787016020908152604080832085518452909152812080549091906111e6908490612655565b90915550506020810151612710906111fe9088612603565b611208919061261a565b60008381526011870160205260408120600301805490919061122b908490612655565b9091555061123a905089611c53565b61124a82888660020154896116cd565b5086888a7f52cde9fcf4f60d6799679d6944671724549a11ac0b9ee9d4aa178993404721968960405161127f91815260200190565b60405180910390a4505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c0810182905260009061050f9060e00160405160208183030381529060405280519060200120611d3a565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000611331611303565b9050600061133e83610c1f565b600084815260128401602090815260408083208484526011870190925282206001810154600583015460038401549596509294919392612710926113829190612655565b61138c9190612603565b611396919061261a565b9050808260030160008282546113ac9190612655565b90915550506000848152602786016020908152604080832085548452909152812080548392906113dd908490612655565b90915550505050600401805460ff19169055505050565b60408051808201909152606080825260208201526000611412611303565b6000858152602d8201602090815260408083208784528252808320815181546060948102820185018452928101838152959650939490928492849184018282801561147c57602002820191906000526020600020905b815481526020019060010190808311611468575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156114fc57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116114c35790505b50505091909252505081515191925050158061151f575060208101515181515114155b15611618576000808052602d830160209081526040808320878452825291829020825181546060938102820184018552938101848152909391928492849184018282801561158c57602002820191906000526020600020905b815481526020019060010190808311611578575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561160c57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116115d35790505b50505050508152505090505b949350505050565b6000815160000361163357506000919050565b506020015190565b60008061164785610c1f565b905061165481858561165d565b95945050505050565b600080611668611303565b6000868152601f82016020908152604080832088845290915290205490915080158015906116b157506000818152601d83016020908152604080832087845290915290205460ff165b156116c157600192505050610208565b50600095945050505050565b6000806116d8611303565b600085815260158201602090815260408083208a84529091529020549091508311156117565760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101c4565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161179091612655565b10156118045760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101c4565b61180e8685611d88565b6000848152601582016020908152604080832089845290915281208054859290611839908490612655565b909155505060008481526015820160209081526040808320888452909152812080548592906118699084906125c4565b9091555061187d9050868686866000611e3b565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339188916000805160206127088339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b60808201529051339187916000805160206127088339815191529181900360a00190a350600195945050505050565b600061196b611303565b60008481526012820160209081526040808320600701805482518185028101850190935280835294955092939092918301828280156119c957602002820191906000526020600020905b8154815260200190600101908083116119b5575b505050505090506000826012016000868152602001908152602001600020600801805480602002602001604051908101604052809291908181526020018280548015611a3457602002820191906000526020600020905b815481526020019060010190808311611a20575b505050505090506000825190506000611a4c87610c1f565b6000888152601287016020526040812060020154919250805b84811015611b3f57612710868281518110611a8257611a826125ed565b60200260200101518a611a959190612603565b611a9f919061261a565b9150868181518110611ab357611ab36125ed565b6020026020010151847f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd85856001604051611b01939291909283526020830191909152604082015260600190565b60405180910390a3611b2e84888381518110611b1f57611b1f6125ed565b602002602001015185856116cd565b50611b388161263c565b9050611a65565b506000611b4d8460016113f4565b80515190915060005b81811015611c455761271083602001518281518110611b7757611b776125ed565b602002602001015161ffff168c611b8e9190612603565b611b98919061261a565b93508315611c35578251805182908110611bb457611bb46125ed565b6020026020010151867f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd87876001604051611c02939291909283526020830191909152604082015260600190565b60405180910390a3611c338684600001518381518110611c2457611c246125ed565b602002602001015187876116cd565b505b611c3e8161263c565b9050611b56565b505050505050505050505050565b6000611c5d611303565b600083815260098201602052604090205490915060ff1615611cda5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101c4565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000610a8b611d4761200f565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000611d92611303565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015611ded57602002820191906000526020600020905b815481526020019060010190808311611dd9575b5050505050905060005b8151811015611e3457611e248585848481518110611e1757611e176125ed565b6020026020010151612040565b611e2d8161263c565b9050611df7565b5050505050565b6000611e45611303565b90506000611e52856122bd565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015611ead57602002820191906000526020600020905b815481526020019060010190808311611e99575b5050505050905060005b8151811015612004576000828281518110611ed457611ed46125ed565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090611f0a898784846122dd565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611f429084906125c4565b90915550508b15611f865760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290611f80908490612655565b90915550505b8715611ff05760008a8152601b8801602090815260408083208684529091529020548690611fb5908b90612603565b611fbf919061261a565b60008b8152601b89016020908152604080832087845290915281208054909190611fea9084906125c4565b90915550505b50505080611ffd9061263c565b9050611eb7565b505050505050505050565b60008061201a611303565b9050806001015446146120345761202f61232d565b61203a565b80600201545b91505090565b600061204a611303565b9050600061207c6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610a80565b600085815260158401602090815260408083208984529091528120549192506120a4866122bd565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c855290925282205492935091906120ee858585856122dd565b905080156122b1576000898152601c8801602090815260408083208b845282528083208d8452909152812080548392906121299084906125c4565b90915550506000888152601588016020908152604080832089845290915281208054839290612159908490612655565b9091555050600088815260158801602090815260408083208d8452909152812080548392906121899084906125c4565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206127088339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206127088339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b6000806122c8611303565b60009384526016016020525050604090205490565b6000806122ea8685612603565b905060008515612303576122fe868361261a565b612306565b60005b90508084101561231f5761231a8482612655565b612322565b60005b979650505050505050565b600080612338611303565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8160040160405161236c9190612668565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b6000602082840312156123e757600080fd5b5035919050565b6000806040838503121561240157600080fd5b50508035926020909101359150565b60006020808352608080840185518386015282860151604081818801528088015191506060808189015283835180865260a09550858a019150878501945060005b8181101561248e57855180518452898101518a85015285810151868501528481015185850152880151888401529488019491860191600101612451565b50909a9950505050505050505050565b600080600080608085870312156124b457600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a086880312156124e857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b8181101561255d57602081850181015186830182015201612541565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061259c6080830185612537565b82810360608401526123228185612537565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a8b57610a8b6125ae565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610a8b57610a8b6125ae565b60008261263757634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161264e5761264e6125ae565b5060010190565b81810381811115610a8b57610a8b6125ae565b600080835481600182811c91508083168061268457607f831692505b602080841082036126a357634e487b7160e01b86526022600452602486fd5b8180156126b757600181146126cc576126f9565b60ff19861689528415158502890196506126f9565b60008a81526020902060005b868110156126f15781548b8201529085019083016126d8565b505084890196505b50949897505050505050505056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220088eade64afc594dd7683dcf2262749aa4177e5907d4de31f6087922de78e39b64736f6c63430008110033", - "nonce": "0x8e", + "data": "0x608060405234801561001057600080fd5b506127e2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80637d2926051161005b5780637d292605146100fd578063c3ab48cb14610110578063e8b3fb3c14610188578063f3253b5f1461019b57600080fd5b8062bae1731461008c5780630a27162a146100a15780631add96f6146100ca57806323eaabe3146100ea575b600080fd5b61009f61009a366004612416565b6101bc565b005b6100b46100af366004612416565b610205565b6040516100c1919061242f565b60405180910390f35b6100dd6100d8366004612473565b61021b565b6040516100c19190612495565b61009f6100f8366004612416565b610250565b61009f61010b366004612473565b610320565b61012361011e366004612416565b6103c7565b6040516100c191906000610100820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015260a0830151151560a083015260c083015160c083015260e083015160e083015292915050565b61009f610196366004612523565b6104b6565b6101ae6101a9366004612555565b610541565b6040519081526020016100c1565b6000356001600160e01b0319166101d28161055a565b156101f85760405162461bcd60e51b81526004016101ef90612590565b60405180910390fd5b61020182610598565b5050565b606061021082610622565b610100015192915050565b61023f60405180606001604052806000815260200160008152602001606081525090565b61024983836107b5565b9392505050565b610258610c26565b6040518060400160405280601381526020017253797374656d20556e6465727772697465727360681b8152506102a18261029183610c54565b61029a33610c65565b9190610c7a565b610312576102ae33610c65565b8260006102c4826102be33610c65565b90610cd5565b146102e3576102de6102d9856102be33610c65565b610d00565b6102f4565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101ef9493929190612602565b61031b83610d31565b505050565b6000356001600160e01b0319166103368161055a565b156103535760405162461bcd60e51b81526004016101ef90612590565b82604051806040016040528060128152602001715061792053696d706c65205072656d69756d60701b81525061038c8261029183610c54565b610399576102ae33610c65565b60006103a433610c65565b905060006103b182610df3565b90506103be818888610e13565b50505050505050565b6104166040518061010001604052806000815260200160008152602001600080191681526020016000815260200160001515815260200160001515815260200160008152602001600081525090565b60405180610100016040528061042b84610622565b51815260200161043a84610622565b60200151815260200161044c84610622565b60400151815260200161045e84610622565b60600151815260200161047084610622565b608001511515815260200161048484610622565b60a001511515815260200161049884610622565b60c0015181526020016104aa84610622565b60e00151905292915050565b6000356001600160e01b0319166104cc8161055a565b156104e95760405162461bcd60e51b81526004016101ef90612590565b6104f233610fb1565b6040518060400160405280601081526020016f5061792053696d706c6520436c61696d60801b8152506105288261029183610c54565b610535576102ae33610c65565b6103be87878787610fe2565b600061055086868686866112d3565b9695505050505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b60006105a2611344565b60008381526012820160205260409020600481015491925090610100900460ff161580156105d4575080600101544210155b80156105e45750600481015460ff165b1561031b576105f283611368565b60405183907f5ef763899e3efa30fdc82a86b8d4d4a48974ced5248d778d1c4d322160ecfa0190600090a2505050565b61067f60405180610140016040528060008152602001600081526020016000801916815260200160008152602001600015158152602001600015158152602001600081526020016000815260200160608152602001606081525090565b6000610689611344565b60008481526012820160209081526040918290208251610140810184528154815260018201548184015260028201548185015260038201546060820152600482015460ff808216151560808401526101009182900416151560a0830152600583015460c0830152600683015460e0830152600783018054865181870281018701909752808752969750919592949086019390929083018282801561074c57602002820191906000526020600020905b815481526020019060010190808311610738575b50505050508152602001600882018054806020026020016040519081016040528092919081815260200182805480156107a457602002820191906000526020600020905b815481526020019060010190808311610790575b505050505081525050915050919050565b6107d960405180606001604052806000815260200160008152602001606081525090565b60006107e3611344565b600085815260128201602090815260408083206007018054825181850281018501909352808352949550929390929183018282801561084157602002820191906000526020600020905b81548152602001906001019080831161082d575b5050505050905060008260120160008781526020019081526020016000206008018054806020026020016040519081016040528092919081815260200182805480156108ac57602002820191906000526020600020905b815481526020019060010190808311610898575b5050505050905060008251905060006108c488610df3565b905060006108d3826001611435565b80515190915060006108e58583612649565b6108ef9082612649565b90508067ffffffffffffffff81111561090a5761090a61265c565b60405190808252806020026020018201604052801561096357816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282526000199092019101816109285790505b5060408a01526000805b86811015610aa25761271088828151811061098a5761098a612672565b60200260200101518d61099d9190612688565b6109a7919061269f565b91508881815181106109bb576109bb612672565b60200260200101518b6040015182815181106109d9576109d9612672565b602002602001015160200181815250508781815181106109fb576109fb612672565b60200260200101518b604001518281518110610a1957610a19612672565b60200260200101516080018181525050818b604001518281518110610a4057610a40612672565b60200260200101516060018181525050878181518110610a6257610a62612672565b60200260200101518b602001818151610a7b9190612649565b9052508a5182908c90610a8f908390612649565b905250610a9b816126c1565b905061096d565b5060005b83811015610c165761271085602001518281518110610ac757610ac7612672565b602002602001015161ffff168d610ade9190612688565b610ae8919061269f565b915084600001518181518110610b0057610b00612672565b60200260200101518b604001518289610b199190612649565b81518110610b2957610b29612672565b6020026020010151602001818152505084602001518181518110610b4f57610b4f612672565b602002602001015161ffff168b604001518289610b6c9190612649565b81518110610b7c57610b7c612672565b60209081029190910101516080015260408b01518290610b9c838a612649565b81518110610bac57610bac612672565b6020026020010151606001818152505084602001518181518110610bd257610bd2612672565b602002602001015161ffff168b602001818151610bef9190612649565b9052508a5182908c90610c03908390612649565b905250610c0f816126c1565b9050610aa6565b5050505050505050505092915050565b6000610c4f6040518060400160405280600681526020016553797374656d60d01b815250610c54565b905090565b6000610c5f82611661565b92915050565b60601b6bffffffffffffffffffffffff191690565b6000610c8784848461167c565b15610c9457506001610249565b610c9f84848461169e565b15610cac57506001610249565b610cbe84610cb8610c26565b8461169e565b15610ccb57506001610249565b5060009392505050565b600080610ce0611344565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6000610d3b611344565b60008381526012820160205260409020600481015491925090610100900460ff1615610da95760405162461bcd60e51b815260206004820152601860248201527f506f6c69637920616c72656164792063616e63656c6c6564000000000000000060448201526064016101ef565b610db283611368565b60048101805461ff00191661010017905560405183907fb9f06c2aafb33d6e7e10925f097be026995386c2e7c3b05f336fe417c1b9c61e90600090a2505050565b600080610dfe611344565b6000938452600a016020525050604090205490565b60008111610e5c5760405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a59081c1c995b5a5d5b48185b5bdd5b9d60521b60448201526064016101ef565b6000610e66611344565b6000858152600f8201602052604090205490915060ff16610e9d5760405163e1f8801360e01b8152600481018590526024016101ef565b600083815260108201602052604090205460ff16610ed1576040516307c579f360e21b8152600481018490526024016101ef565b6000610edc84610df3565b60008581526012840160205260409020600481015491925090610100900460ff1615610f405760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101ef565b610f50868383600201548761170e565b50610f5b85856119a2565b83816006016000828254610f6f9190612649565b909155505060405184815285907fd44880514d72bd9d26e63603fa8448ea9bac29c0099e74e0a2c80a3ff4b39d829060200160405180910390a2505050505050565b600080610fbc611344565b90506000610fc984610c65565b6000908152600a90920160205250604090205492915050565b6000610fec611344565b9050600082116110355760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a590818db185a5b48185b5bdd5b9d60621b60448201526064016101ef565b61106f838561106a6040518060400160405280600f81526020016e496e7375726564205061727469657360881b815250610c54565b61169e565b6110b25760405162461bcd60e51b81526020600482015260146024820152736e6f7420616e20696e737572656420706172747960601b60448201526064016101ef565b600084815260128201602052604090206004810154610100900460ff16156111125760405162461bcd60e51b8152602060048201526013602482015272141bdb1a58de481a5cc818d85b98d95b1b1959606a1b60448201526064016101ef565b60058101546111218185612649565b8260030154101561116b5760405162461bcd60e51b8152602060048201526014602482015273195e18d959591cc81c1bdb1a58de481b1a5b5a5d60621b60448201526064016101ef565b8382600501600082825461117f9190612649565b909155506000905061119087610df3565b6000818152601186016020908152604091829020825160a081018452815481526001820154928101839052600282015493810193909352600381015460608401526004015460ff161515608083015291925090612710906111f19088612688565b6111fb919061269f565b6000838152602787016020908152604080832085518452909152812080549091906112279084906126da565b909155505060208101516127109061123f9088612688565b611249919061269f565b60008381526011870160205260408120600301805490919061126c9084906126da565b9091555061127b905089611c94565b61128b828886600201548961170e565b5086888a7f52cde9fcf4f60d6799679d6944671724549a11ac0b9ee9d4aa17899340472196896040516112c091815260200190565b60405180910390a4505050505050505050565b604080517f0d40926ea0fad01711c674b0c53bbf6604490695a7201d351f27085bd6747be56020820152908101869052606081018590526080810184905260a0810183905260c081018290526000906105509060e00160405160208183030381529060405280519060200120611d7b565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000611372611344565b9050600061137f83610df3565b600084815260128401602090815260408083208484526011870190925282206001810154600583015460038401549596509294919392612710926113c391906126da565b6113cd9190612688565b6113d7919061269f565b9050808260030160008282546113ed91906126da565b909155505060008481526027860160209081526040808320855484529091528120805483929061141e9084906126da565b90915550505050600401805460ff19169055505050565b60408051808201909152606080825260208201526000611453611344565b6000858152602d820160209081526040808320878452825280832081518154606094810282018501845292810183815295965093949092849284918401828280156114bd57602002820191906000526020600020905b8154815260200190600101908083116114a9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561153d57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116115045790505b505050919092525050815151919250501580611560575060208101515181515114155b15611659576000808052602d83016020908152604080832087845282529182902082518154606093810282018401855293810184815290939192849284918401828280156115cd57602002820191906000526020600020905b8154815260200190600101908083116115b9575b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561164d57602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff16815260200190600201906020826001010492830192600103820291508084116116145790505b50505050508152505090505b949350505050565b6000815160000361167457506000919050565b506020015190565b60008061168885610df3565b905061169581858561169e565b95945050505050565b6000806116a9611344565b6000868152601f82016020908152604080832088845290915290205490915080158015906116f257506000818152601d83016020908152604080832087845290915290205460ff165b1561170257600192505050610249565b50600095945050505050565b600080611719611344565b600085815260158201602090815260408083208a84529091529020549091508311156117975760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101ef565b600086815260278201602090815260408083208784528252808320546015850183528184208a85529092529091205484916117d1916126da565b10156118455760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101ef565b61184f8685611dc9565b600084815260158201602090815260408083208984529091528120805485929061187a9084906126da565b909155505060008481526015820160209081526040808320888452909152812080548592906118aa908490612649565b909155506118be9050868686866000611e7c565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391889160008051602061278d8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b608082015290513391879160008051602061278d8339815191529181900360a00190a350600195945050505050565b60006119ac611344565b6000848152601282016020908152604080832060070180548251818502810185019093528083529495509293909291830182828015611a0a57602002820191906000526020600020905b8154815260200190600101908083116119f6575b505050505090506000826012016000868152602001908152602001600020600801805480602002602001604051908101604052809291908181526020018280548015611a7557602002820191906000526020600020905b815481526020019060010190808311611a61575b505050505090506000825190506000611a8d87610df3565b6000888152601287016020526040812060020154919250805b84811015611b8057612710868281518110611ac357611ac3612672565b60200260200101518a611ad69190612688565b611ae0919061269f565b9150868181518110611af457611af4612672565b6020026020010151847f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd85856001604051611b42939291909283526020830191909152604082015260600190565b60405180910390a3611b6f84888381518110611b6057611b60612672565b6020026020010151858561170e565b50611b79816126c1565b9050611aa6565b506000611b8e846001611435565b80515190915060005b81811015611c865761271083602001518281518110611bb857611bb8612672565b602002602001015161ffff168c611bcf9190612688565b611bd9919061269f565b93508315611c76578251805182908110611bf557611bf5612672565b6020026020010151867f66a3997c25d4b2e7bb8642eed83e5bb5257578443f703d04cfa237094ae1fecd87876001604051611c43939291909283526020830191909152604082015260600190565b60405180910390a3611c748684600001518381518110611c6557611c65612672565b6020026020010151878761170e565b505b611c7f816126c1565b9050611b97565b505050505050505050505050565b6000611c9e611344565b600083815260098201602052604090205490915060ff1615611d1b5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101ef565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b6000610c5f611d88612050565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000611dd3611344565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015611e2e57602002820191906000526020600020905b815481526020019060010190808311611e1a575b5050505050905060005b8151811015611e7557611e658585848481518110611e5857611e58612672565b6020026020010151612081565b611e6e816126c1565b9050611e38565b5050505050565b6000611e86611344565b90506000611e93856122fe565b6000868152601884016020908152604080832080548251818502810185019093528083529495509293909291830182828015611eee57602002820191906000526020600020905b815481526020019060010190808311611eda575b5050505050905060005b8151811015612045576000828281518110611f1557611f15612672565b60209081029190910181015160008a8152601b8801835260408082208383529093529182205490925090611f4b8987848461231e565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611f83908490612649565b90915550508b15611fc75760008a8152601c88016020908152604080832086845282528083208f845290915281208054839290611fc19084906126da565b90915550505b87156120315760008a8152601b8801602090815260408083208684529091529020548690611ff6908b90612688565b612000919061269f565b60008b8152601b8901602090815260408083208784529091528120805490919061202b908490612649565b90915550505b5050508061203e906126c1565b9050611ef8565b505050505050505050565b60008061205b611344565b9050806001015446146120755761207061236e565b61207b565b80600201545b91505090565b600061208b611344565b905060006120bd6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610c54565b600085815260158401602090815260408083208984529091528120549192506120e5866122fe565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c8552909252822054929350919061212f8585858561231e565b905080156122f2576000898152601c8801602090815260408083208b845282528083208d84529091528120805483929061216a908490612649565b9091555050600088815260158801602090815260408083208984529091528120805483929061219a9084906126da565b9091555050600088815260158801602090815260408083208d8452909152812080548392906121ca908490612649565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b608082015290513391889160008051602061278d8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c9160008051602061278d8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080612309611344565b60009384526016016020525050604090205490565b60008061232b8685612688565b9050600085156123445761233f868361269f565b612347565b60005b9050808410156123605761235b84826126da565b612363565b60005b979650505050505050565b600080612379611344565b90507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f816004016040516123ad91906126ed565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c0016040516020818303038152906040528051906020012091505090565b60006020828403121561242857600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156124675783518352928401929184019160010161244b565b50909695505050505050565b6000806040838503121561248657600080fd5b50508035926020909101359150565b60006020808352608080840185518386015282860151604081818801528088015191506060808189015283835180865260a09550858a019150878501945060005b8181101561251357855180518452898101518a850152858101518685015284810151858501528801518884015294880194918601916001016124d6565b50909a9950505050505050505050565b6000806000806080858703121561253957600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a0868803121561256d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b818110156125e2576020818501810151868301820152016125c6565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061262160808301856125bc565b828103606084015261236381856125bc565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c5f57610c5f612633565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610c5f57610c5f612633565b6000826126bc57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016126d3576126d3612633565b5060010190565b81810381811115610c5f57610c5f612633565b600080835481600182811c91508083168061270957607f831692505b6020808410820361272857634e487b7160e01b86526022600452602486fd5b81801561273c57600181146127515761277e565b60ff198616895284151585028901965061277e565b60008a81526020902060005b868110156127765781548b82015290850190830161275d565b505084890196505b50949897505050505050505056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba264697066735822122029aaa5bd1f621f08cf9bd85b6cb5b20baca02657e720f7f914498099eadedb7764736f6c63430008110033", + "nonce": "0x9a", "accessList": [] }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0xf88229483fd7044cb145adf64a2b0d189152bb417637e2a0b9de33e3af90d44c", + "hash": "0x9ef1b894b371c25376cd287ea07a2b8a8926960479ab9375fac49805fbeb257c", "transactionType": "CREATE", "contractName": "SystemFacet", - "contractAddress": "0x9BF85AB79B93d2ba1321BeB40E2803FC9a819108", + "contractAddress": "0x217C1d6D6a72925918a644d67dcb0c3760b81E08", "function": null, "arguments": null, "transaction": { @@ -88,18 +145,18 @@ "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", "gas": "0x3184fc", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b50612c5d806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200005e5760003560e01c8063524d8dd5146200006357806353733f97146200008f5780637dfcdf2a14620000a8578063cf0ccf9e14620000bf578063cfb5192814620000e9575b600080fd5b6200007a62000074366004620013ae565b6200010f565b60405190151581526020015b60405180910390f35b620000a6620000a0366004620013c8565b62000147565b005b620000a6620000b9366004620013ae565b62000284565b620000d6620000d0366004620013ae565b620003a2565b604051620000869594939291906200145b565b62000100620000fa366004620014c1565b620003c7565b60405190815260200162000086565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604081205460ff165b92915050565b62000151620003d4565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506200019f82620001898362000404565b6001600160601b03193360601b16919062000411565b6200026e576001600160601b03193360601b165b82600062000205826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1462000234576200022e62000228856001600160601b03193360601b16620001ca565b6200047b565b62000245565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016200026594939291906200157c565b60405180910390fd5b6200027c86868686620004ac565b505050505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5460011901620002f85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000265565b60027f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5562000326620003d4565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506200035c82620001898362000404565b62000375576001600160601b03193360601b16620001b3565b62000380836200063e565b505060016200039b60008051602062002c0883398151915290565b6003015550565b6000806060806000620003b586620007d3565b939a9299509097509550909350915050565b6000620001418262000404565b6000620003ff6040518060400160405280600681526020016553797374656d60d01b81525062000404565b905090565b60006200014182620009cd565b600062000420848484620009e9565b156200042f5750600162000474565b6200043c84848462000a2d565b156200044b5750600162000474565b62000461846200045a620003d4565b8462000a2d565b15620004705750600162000474565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008481527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460008051602062002c088339815191529060ff16156200051157604051634fd254f560e11b81526004810186905260240162000265565b6200051c8362000ac0565b62000528858362000d78565b62000534848662000dee565b6000858152600f82016020908152604091829020805460ff191660011790558151808301909252600c82526b22b73a34ba3c9020b236b4b760a11b908201526200058d9085908790620005879062000404565b62000e6e565b606083013515620005e15760405162461bcd60e51b815260206004820152601d60248201527f7574696c697a6564206361706163697479207374617274732061742030000000604482015260640162000265565b600085815260118201602052604090208390620005ff8282620015cb565b505060405184815285907f14944295d1f05c993504e6e25b1bc3eaadd9ace8fcd3fa0b015880dc0cceebcb906020015b60405180910390a25050505050565b60008051602062002c08833981519152620006598262001176565b6200069d5760405162461bcd60e51b81526020600482015260136024820152726d75737420626520746f6b656e697a61626c6560681b604482015260640162000265565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd560205260409020546001600160a01b031615620007235760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c72656164790000000000604482015260640162000265565b6000826040516200073490620013a0565b908152602001604051809103906000f08015801562000757573d6000803e3d6000fd5b506000848152600e84016020908152604080832080546001600160a01b0319166001600160a01b038616908117909155808452602b870183529281902087905551918252919250829185917fa31821b12665c4ed143d0185d4d5bceab4b16f15fad65d427a9f946457876af4910160405180910390a250505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd28352818420547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd390935290832080549193606092839260008051602062002c0883398151915291620008779062001617565b80601f0160208091040260200160405190810160405280929190818152602001828054620008a59062001617565b8015620008f65780601f10620008ca57610100808354040283529160200191620008f6565b820191906000526020600020905b815481529060010190602001808311620008d857829003601f168201915b50505060008a8152600d8501602052604090208054939750926200091d9250905062001617565b80601f01602080910402602001604051908101604052809291908181526020018280546200094b9062001617565b80156200099c5780601f1062000970576101008083540402835291602001916200099c565b820191906000526020600020905b8154815290600101906020018083116200097e57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b60008151600003620009e157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205462000a2481858562000a2d565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602062002c0883398151915290801580159062000aa257506000818152601d83016020908152604080832087845290915290205460ff165b1562000ab45760019250505062000474565b50600095945050505050565b80351562000c6f5762000ad48135620011cc565b62000b225760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640162000265565b806020013560011115801562000b3e5750612710816020013511155b62000b9a5760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840162000265565b62000bac60a082016080830162001653565b158062000bbd575060008160400135115b62000c315760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840162000265565b80604001358160600135111562000c6c5760408051630102498560e11b81526060830135600482015290820135602482015260440162000265565b50565b60208101351562000cc35760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640162000265565b62000cd560a082016080830162001653565b1562000d245760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640162000265565b60408101351562000c6c5760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640162000265565b60008051602062002c0883398151915262000d93836200122f565b6000838152600b8201602090815260408083208590558051868152918201929092529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060015b60405180910390a1505050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320849055805185815291820184905281019190915260008051602062002c08833981519152907f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab59060600162000de1565b60008051602062002c08833981519152600084900362000ec55760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640162000265565b8260000362000f0c5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640162000265565b8160000362000f505760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640162000265565b6000848152601f82016020908152604080832086845290915290205462000f76620003d4565b8414801562000fb2575062000faf6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b81145b801562000fbf5750828114155b156200103457600182602a015411620010275760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840162000265565b602a820180546000190190555b6200103e620003d4565b841480156200107a5750620010776040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b83145b15620010fa576200108b8562001339565b6001600160a01b0316620010c67fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603620010ee57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a0016200062f565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd360205260408120805460008051602062002c088339815191529190620011c29062001617565b1515949350505050565b600060008051602062002c088339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda826200120b8562001339565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604090205460008051602062002c088339815191529060ff1615620012d95760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840162000265565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b60006bffffffffffffffffffffffff821615620013995760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640162000265565b5060601c90565b611594806200167483390190565b600060208284031215620013c157600080fd5b5035919050565b600080600080848603610100811215620013e157600080fd5b853594506020860135935060a0603f1982011215620013ff57600080fd5b50929591945050604083019260e001359150565b6000815180845260005b818110156200143b576020818501810151868301820152016200141d565b506000602082860101526020601f19601f83011685010191505092915050565b85815284602082015260a0604082015260006200147c60a083018662001413565b828103606084015262001490818662001413565b91505060018060a01b03831660808301529695505050505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620014d457600080fd5b813567ffffffffffffffff80821115620014ed57600080fd5b818401915084601f8301126200150257600080fd5b813581811115620015175762001517620014ab565b604051601f8201601f19908116603f01168101908382118183101715620015425762001542620014ab565b816040528281528760208487010111156200155c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b8481528360208201526080604082015260006200159d608083018562001413565b8281036060840152620015b1818562001413565b979650505050505050565b801515811462000c6c57600080fd5b813581556020820135600182015560408201356002820155606082013560038201556004810160808301356200160181620015bc565b815490151560ff1660ff19919091161790555050565b600181811c908216806200162c57607f821691505b6020821081036200164d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200166657600080fd5b81356200047481620015bc56fe6101006040523480156200001257600080fd5b5060405162001594380380620015948339810160408190526200003591620002a0565b3360a081905260405163531657c160e11b81526004810183905263a62caf8290602401602060405180830381865afa15801562000076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009c9190620002ba565b620000ee5760405162461bcd60e51b815260206004820152601360248201527f6d75737420626520746f6b656e697a61626c650000000000000000000000000060448201526064015b60405180910390fd5b60a0516040516310b4955d60e01b8152600481018390526001600160a01b03909116906310b4955d90602401602060405180830381865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e9190620002ba565b15620001ad5760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c726561647900000000006044820152606401620000e5565b60808190524660c052620001c0620001ca565b60e05250620002e5565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620002056080516200026f60201b62000dd71760201c565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b600060208284031215620002b357600080fd5b5051919050565b600060208284031215620002cd57600080fd5b81518015158114620002de57600080fd5b9392505050565b60805160a05160c05160e0516112286200036c60003960006106bd0152600061068d0152600081816102a601528181610384015281816105ea015281816107910152818161089b0152610afd0152600081816102720152818161035b015281816105bd015281816107f00152818161086701528181610ad00152610e3001526112286000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806355b6ed5c11610097578063a457c2d711610066578063a457c2d7146101f1578063a9059cbb14610204578063d505accf14610217578063dd62ed3e1461022c57600080fd5b806355b6ed5c1461018e57806370a08231146101b65780637ecebe00146101c957806395d89b41146101e957600080fd5b806323b872dd116100d357806323b872dd14610151578063313ce567146101645780633644e51514610173578063395093511461017b57600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610263565b60405161010f9190610ee2565b60405180910390f35b61012b610126366004610f2d565b61031f565b604051901515815260200161010f565b61014361034c565b60405190815260200161010f565b61012b61015f366004610f59565b6103fc565b6040516012815260200161010f565b610143610689565b61012b610189366004610f2d565b6106df565b61014361019c366004610f9a565b600060208181529281526040808220909352908152205481565b6101436101c4366004610fd3565b61078d565b6101436101d7366004610fd3565b60016020526000908152604090205481565b610102610858565b61012b6101ff366004610f2d565b610915565b61012b610212366004610f2d565b6109c7565b61022a610225366004610ff7565b610b9a565b005b61014361023a366004610f9a565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205490565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610315919081019061110c565b5095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152902081905560015b92915050565b604051637104788560e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e208f10a90602401602060405180830381865afa1580156103d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f79190611198565b905090565b6000805160206111d383398151915254600090600119016104645760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000805160206111d383398151915255600082900361048457600080fd5b6001600160a01b038416600090815260208181526040808320338452909152902054828110156104ed5760405162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161045b565b60001981146105235761050083826111b1565b6001600160a01b0386166000908152602081815260408083203384529091529020555b60006105398660601b6001600160601b03191690565b905060006105518660601b6001600160601b03191690565b9050856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161059891815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b15801561063657600080fd5b505af115801561064a573d6000803e3d6000fd5b5050505060019350505050600161067e7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600301559392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146106ba576103f7610e08565b507f000000000000000000000000000000000000000000000000000000000000000090565b336000908152602081815260408083206001600160a01b0386168452909152812054829061070f906000196111b1565b101561075d5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015260640161045b565b50336000908152602081815260408083206001600160a01b03861684529091529020805482019055600192915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c9233016107d28460601b6001600160601b03191690565b6040516001600160e01b031960e084901b16815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006024820152604401602060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611198565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261090a919081019061110c565b509095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152812054828110156109955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161045b565b5050336000908152602081815260408083206001600160a01b0386168452909152902080548290039055600192915050565b6000805160206111d38339815191525460009060011901610a2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045b565b60026000805160206111d38339815191525560003360601b6001600160601b03191690506000610a648560601b6001600160601b03191690565b9050846001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610aab91815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506001925050506001610b907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6003015592915050565b42841015610bea5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161045b565b60006001610bf6610689565b6001600160a01b038a81166000818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98183015280840194909452938d166060840152608083018c905260a083015260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610cfd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610d335750876001600160a01b0316816001600160a01b0316145b610d705760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161045b565b6001600160a01b039081166000908152602081815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e547f0000000000000000000000000000000000000000000000000000000000000000610dd7565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60005b83811015610ed9578181015183820152602001610ec1565b50506000910152565b6020815260008251806020840152610f01816040850160208701610ebe565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610f2a57600080fd5b50565b60008060408385031215610f4057600080fd5b8235610f4b81610f15565b946020939093013593505050565b600080600060608486031215610f6e57600080fd5b8335610f7981610f15565b92506020840135610f8981610f15565b929592945050506040919091013590565b60008060408385031215610fad57600080fd5b8235610fb881610f15565b91506020830135610fc881610f15565b809150509250929050565b600060208284031215610fe557600080fd5b8135610ff081610f15565b9392505050565b600080600080600080600060e0888a03121561101257600080fd5b873561101d81610f15565b9650602088013561102d81610f15565b95506040880135945060608801359350608088013560ff8116811461105157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261109557600080fd5b815167ffffffffffffffff808211156110b0576110b061106e565b604051601f8301601f19908116603f011681019082821181831017156110d8576110d861106e565b816040528381528660208588010111156110f157600080fd5b611102846020830160208901610ebe565b9695505050505050565b600080600080600060a0868803121561112457600080fd5b8551945060208601519350604086015167ffffffffffffffff8082111561114a57600080fd5b61115689838a01611084565b9450606088015191508082111561116c57600080fd5b5061117988828901611084565b925050608086015161118a81610f15565b809150509295509295909350565b6000602082840312156111aa57600080fd5b5051919050565b8181038181111561034657634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcaa26469706673582212207b0ea5c957cd3a4d68949d71f66b3285102a74410556128255f3922f2424456464736f6c634300081100331ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212204969805c21a143e9d40161aa11f7fc84feef324f2925769757425c6b130c261d64736f6c63430008110033", - "nonce": "0x8f", + "data": "0x608060405234801561001057600080fd5b50612c5d806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200005e5760003560e01c8063524d8dd5146200006357806353733f97146200008f5780637dfcdf2a14620000a8578063cf0ccf9e14620000bf578063cfb5192814620000e9575b600080fd5b6200007a62000074366004620013ae565b6200010f565b60405190151581526020015b60405180910390f35b620000a6620000a0366004620013c8565b62000147565b005b620000a6620000b9366004620013ae565b62000284565b620000d6620000d0366004620013ae565b620003a2565b604051620000869594939291906200145b565b62000100620000fa366004620014c1565b620003c7565b60405190815260200162000086565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604081205460ff165b92915050565b62000151620003d4565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506200019f82620001898362000404565b6001600160601b03193360601b16919062000411565b6200026e576001600160601b03193360601b165b82600062000205826001600160601b03193360601b165b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b1462000234576200022e62000228856001600160601b03193360601b16620001ca565b6200047b565b62000245565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016200026594939291906200157c565b60405180910390fd5b6200027c86868686620004ac565b505050505050565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5460011901620002f85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000265565b60027f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfca5562000326620003d4565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506200035c82620001898362000404565b62000375576001600160601b03193360601b16620001b3565b62000380836200063e565b505060016200039b60008051602062002c0883398151915290565b6003015550565b6000806060806000620003b586620007d3565b939a9299509097509550909350915050565b6000620001418262000404565b6000620003ff6040518060400160405280600681526020016553797374656d60d01b81525062000404565b905090565b60006200014182620009cd565b600062000420848484620009e9565b156200042f5750600162000474565b6200043c84848462000a2d565b156200044b5750600162000474565b62000461846200045a620003d4565b8462000a2d565b15620004705750600162000474565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008481527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460008051602062002c088339815191529060ff16156200051157604051634fd254f560e11b81526004810186905260240162000265565b6200051c8362000ac0565b62000528858362000d78565b62000534848662000dee565b6000858152600f82016020908152604091829020805460ff191660011790558151808301909252600c82526b22b73a34ba3c9020b236b4b760a11b908201526200058d9085908790620005879062000404565b62000e6e565b606083013515620005e15760405162461bcd60e51b815260206004820152601d60248201527f7574696c697a6564206361706163697479207374617274732061742030000000604482015260640162000265565b600085815260118201602052604090208390620005ff8282620015cb565b505060405184815285907f14944295d1f05c993504e6e25b1bc3eaadd9ace8fcd3fa0b015880dc0cceebcb906020015b60405180910390a25050505050565b60008051602062002c08833981519152620006598262001176565b6200069d5760405162461bcd60e51b81526020600482015260136024820152726d75737420626520746f6b656e697a61626c6560681b604482015260640162000265565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd560205260409020546001600160a01b031615620007235760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c72656164790000000000604482015260640162000265565b6000826040516200073490620013a0565b908152602001604051809103906000f08015801562000757573d6000803e3d6000fd5b506000848152600e84016020908152604080832080546001600160a01b0319166001600160a01b038616908117909155808452602b870183529281902087905551918252919250829185917fa31821b12665c4ed143d0185d4d5bceab4b16f15fad65d427a9f946457876af4910160405180910390a250505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd28352818420547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd390935290832080549193606092839260008051602062002c0883398151915291620008779062001617565b80601f0160208091040260200160405190810160405280929190818152602001828054620008a59062001617565b8015620008f65780601f10620008ca57610100808354040283529160200191620008f6565b820191906000526020600020905b815481529060010190602001808311620008d857829003601f168201915b50505060008a8152600d8501602052604090208054939750926200091d9250905062001617565b80601f01602080910402602001604051908101604052809291908181526020018280546200094b9062001617565b80156200099c5780601f1062000970576101008083540402835291602001916200099c565b820191906000526020600020905b8154815290600101906020018083116200097e57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b60008151600003620009e157506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd1602052604081205462000a2481858562000a2d565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe66020908152604080832085845290915281205460008051602062002c0883398151915290801580159062000aa257506000818152601d83016020908152604080832087845290915290205460ff165b1562000ab45760019250505062000474565b50600095945050505050565b80351562000c6f5762000ad48135620011cc565b62000b225760405162461bcd60e51b815260206004820152601f60248201527f65787465726e616c20746f6b656e206973206e6f7420737570706f7274656400604482015260640162000265565b806020013560011115801562000b3e5750612710816020013511155b62000b9a5760405162461bcd60e51b815260206004820152602560248201527f636f6c6c61746572616c20726174696f2073686f756c64206265203120746f20604482015264031303030360dc1b606482015260840162000265565b62000bac60a082016080830162001653565b158062000bbd575060008160400135115b62000c315760405162461bcd60e51b815260206004820152603960248201527f6d61782063617061636974792073686f756c642062652067726561746572207460448201527f68616e203020666f7220706f6c696379206372656174696f6e00000000000000606482015260840162000265565b80604001358160600135111562000c6c5760408051630102498560e11b81526060830135600482015290820135602482015260440162000265565b50565b60208101351562000cc35760405162461bcd60e51b815260206004820152601e60248201527f6f6e6c792063656c6c2068617320636f6c6c61746572616c20726174696f0000604482015260640162000265565b62000cd560a082016080830162001653565b1562000d245760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c2063616e20697373756520706f6c696369657300000000604482015260640162000265565b60408101351562000c6c5760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c792063656c6c732068617665206d617820636170616369747900000000604482015260640162000265565b60008051602062002c0883398151915262000d93836200122f565b6000838152600b8201602090815260408083208590558051868152918201929092529081018390527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b906060015b60405180910390a1505050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160209081526040808320849055805185815291820184905281019190915260008051602062002c08833981519152907f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab59060600162000de1565b60008051602062002c08833981519152600084900362000ec55760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081bd89a9958dd081251607a1b604482015260640162000265565b8260000362000f0c5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a590818dbdb9d195e1d08125160721b604482015260640162000265565b8160000362000f505760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081c9bdb19481251608a1b604482015260640162000265565b6000848152601f82016020908152604080832086845290915290205462000f76620003d4565b8414801562000fb2575062000faf6040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b81145b801562000fbf5750828114155b156200103457600182602a015411620010275760405162461bcd60e51b815260206004820152602360248201527f6d7573742068617665206174206c65617374206f6e652073797374656d20616460448201526236b4b760e91b606482015260840162000265565b602a820180546000190190555b6200103e620003d4565b841480156200107a5750620010776040518060400160405280600c81526020016b29bcb9ba32b69020b236b4b760a11b81525062000404565b83145b15620010fa576200108b8562001339565b6001600160a01b0316620010c67fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320546001600160a01b031690565b6001600160a01b031603620010ee57604051633fb6eaed60e11b815260040160405180910390fd5b602a8201805460010190555b6000858152601f83016020908152604080832087845282529182902085905581518681529081018590526060918101829052600b918101919091526a5f61737369676e526f6c6560a81b608082015285907f73f1011cc86a598765c3b06a1c66df379e7613d3ccfb3fded4db7b7841df651e9060a0016200062f565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd360205260408120805460008051602062002c088339815191529190620011c29062001617565b1515949350505050565b600060008051602062002c088339815191527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfda826200120b8562001339565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd0602052604090205460008051602062002c088339815191529060ff1615620012d95760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b606482015260840162000265565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b60006bffffffffffffffffffffffff821615620013995760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e20616464726573730000604482015260640162000265565b5060601c90565b611594806200167483390190565b600060208284031215620013c157600080fd5b5035919050565b600080600080848603610100811215620013e157600080fd5b853594506020860135935060a0603f1982011215620013ff57600080fd5b50929591945050604083019260e001359150565b6000815180845260005b818110156200143b576020818501810151868301820152016200141d565b506000602082860101526020601f19601f83011685010191505092915050565b85815284602082015260a0604082015260006200147c60a083018662001413565b828103606084015262001490818662001413565b91505060018060a01b03831660808301529695505050505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215620014d457600080fd5b813567ffffffffffffffff80821115620014ed57600080fd5b818401915084601f8301126200150257600080fd5b813581811115620015175762001517620014ab565b604051601f8201601f19908116603f01168101908382118183101715620015425762001542620014ab565b816040528281528760208487010111156200155c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b8481528360208201526080604082015260006200159d608083018562001413565b8281036060840152620015b1818562001413565b979650505050505050565b801515811462000c6c57600080fd5b813581556020820135600182015560408201356002820155606082013560038201556004810160808301356200160181620015bc565b815490151560ff1660ff19919091161790555050565b600181811c908216806200162c57607f821691505b6020821081036200164d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156200166657600080fd5b81356200047481620015bc56fe6101006040523480156200001257600080fd5b5060405162001594380380620015948339810160408190526200003591620002a0565b3360a081905260405163531657c160e11b81526004810183905263a62caf8290602401602060405180830381865afa15801562000076573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009c9190620002ba565b620000ee5760405162461bcd60e51b815260206004820152601360248201527f6d75737420626520746f6b656e697a61626c650000000000000000000000000060448201526064015b60405180910390fd5b60a0516040516310b4955d60e01b8152600481018390526001600160a01b03909116906310b4955d90602401602060405180830381865afa15801562000138573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015e9190620002ba565b15620001ad5760405162461bcd60e51b815260206004820152601b60248201527f6d757374206e6f74206265207772617070656420616c726561647900000000006044820152606401620000e5565b60808190524660c052620001c0620001ca565b60e05250620002e5565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620002056080516200026f60201b62000dd71760201c565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b600060208284031215620002b357600080fd5b5051919050565b600060208284031215620002cd57600080fd5b81518015158114620002de57600080fd5b9392505050565b60805160a05160c05160e0516112286200036c60003960006106bd0152600061068d0152600081816102a601528181610384015281816105ea015281816107910152818161089b0152610afd0152600081816102720152818161035b015281816105bd015281816107f00152818161086701528181610ad00152610e3001526112286000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806355b6ed5c11610097578063a457c2d711610066578063a457c2d7146101f1578063a9059cbb14610204578063d505accf14610217578063dd62ed3e1461022c57600080fd5b806355b6ed5c1461018e57806370a08231146101b65780637ecebe00146101c957806395d89b41146101e957600080fd5b806323b872dd116100d357806323b872dd14610151578063313ce567146101645780633644e51514610173578063395093511461017b57600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b610102610263565b60405161010f9190610ee2565b60405180910390f35b61012b610126366004610f2d565b61031f565b604051901515815260200161010f565b61014361034c565b60405190815260200161010f565b61012b61015f366004610f59565b6103fc565b6040516012815260200161010f565b610143610689565b61012b610189366004610f2d565b6106df565b61014361019c366004610f9a565b600060208181529281526040808220909352908152205481565b6101436101c4366004610fd3565b61078d565b6101436101d7366004610fd3565b60016020526000908152604090205481565b610102610858565b61012b6101ff366004610f2d565b610915565b61012b610212366004610f2d565b6109c7565b61022a610225366004610ff7565b610b9a565b005b61014361023a366004610f9a565b6001600160a01b0391821660009081526020818152604080832093909416825291909152205490565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610315919081019061110c565b5095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152902081905560015b92915050565b604051637104788560e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e208f10a90602401602060405180830381865afa1580156103d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f79190611198565b905090565b6000805160206111d383398151915254600090600119016104645760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000805160206111d383398151915255600082900361048457600080fd5b6001600160a01b038416600090815260208181526040808320338452909152902054828110156104ed5760405162461bcd60e51b81526020600482015260146024820152736e6f7420656e6f75676820616c6c6f77616e636560601b604482015260640161045b565b60001981146105235761050083826111b1565b6001600160a01b0386166000908152602081815260408083203384529091529020555b60006105398660601b6001600160601b03191690565b905060006105518660601b6001600160601b03191690565b9050856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161059891815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018690527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b15801561063657600080fd5b505af115801561064a573d6000803e3d6000fd5b5050505060019350505050600161067e7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600301559392505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146106ba576103f7610e08565b507f000000000000000000000000000000000000000000000000000000000000000090565b336000908152602081815260408083206001600160a01b0386168452909152812054829061070f906000196111b1565b101561075d5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015260640161045b565b50336000908152602081815260408083206001600160a01b03861684529091529020805482019055600192915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c9233016107d28460601b6001600160601b03191690565b6040516001600160e01b031960e084901b16815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006024820152604401602060405180830381865afa158015610834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103469190611198565b60405163678667cf60e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cf0ccf9e90602401600060405180830381865afa1580156108e2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261090a919081019061110c565b509095945050505050565b336000908152602081815260408083206001600160a01b0386168452909152812054828110156109955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161045b565b5050336000908152602081815260408083206001600160a01b0386168452909152902080548290039055600192915050565b6000805160206111d38339815191525460009060011901610a2a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045b565b60026000805160206111d38339815191525560003360601b6001600160601b03191690506000610a648560601b6001600160601b03191690565b9050846001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610aab91815260200190565b60405180910390a3604051631ed7db6560e01b815260048101839052602481018290527f00000000000000000000000000000000000000000000000000000000000000006044820152606481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ed7db6590608401600060405180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506001925050506001610b907f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6003015592915050565b42841015610bea5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161045b565b60006001610bf6610689565b6001600160a01b038a81166000818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98183015280840194909452938d166060840152608083018c905260a083015260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610cfd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610d335750876001600160a01b0316816001600160a01b0316145b610d705760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161045b565b6001600160a01b039081166000908152602081815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e547f0000000000000000000000000000000000000000000000000000000000000000610dd7565b80516020918201206040805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60005b83811015610ed9578181015183820152602001610ec1565b50506000910152565b6020815260008251806020840152610f01816040850160208701610ebe565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610f2a57600080fd5b50565b60008060408385031215610f4057600080fd5b8235610f4b81610f15565b946020939093013593505050565b600080600060608486031215610f6e57600080fd5b8335610f7981610f15565b92506020840135610f8981610f15565b929592945050506040919091013590565b60008060408385031215610fad57600080fd5b8235610fb881610f15565b91506020830135610fc881610f15565b809150509250929050565b600060208284031215610fe557600080fd5b8135610ff081610f15565b9392505050565b600080600080600080600060e0888a03121561101257600080fd5b873561101d81610f15565b9650602088013561102d81610f15565b95506040880135945060608801359350608088013560ff8116811461105157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261109557600080fd5b815167ffffffffffffffff808211156110b0576110b061106e565b604051601f8301601f19908116603f011681019082821181831017156110d8576110d861106e565b816040528381528660208588010111156110f157600080fd5b611102846020830160208901610ebe565b9695505050505050565b600080600080600060a0868803121561112457600080fd5b8551945060208601519350604086015167ffffffffffffffff8082111561114a57600080fd5b61115689838a01611084565b9450606088015191508082111561116c57600080fd5b5061117988828901611084565b925050608086015161118a81610f15565b809150509295509295909350565b6000602082840312156111aa57600080fd5b5051919050565b8181038181111561034657634e487b7160e01b600052601160045260246000fdfe1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfcaa26469706673582212200c86a8f2175b34cd5b040596caac08bb7bde088ff58d324024bdb9bec75cb61a64736f6c634300081100331ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7a26469706673582212201cec633ad6bf584d2e84854a9b1d5363546099de670988e5338f9b26ad8d844264736f6c63430008110033", + "nonce": "0x9b", "accessList": [] }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x9eefe8e8c3ee7d3eb5a0aa2a460ead87fd3978a063f37d9aedb08322a9c62851", + "hash": "0x487aeb6492fe4f6c415fb18cdbacba7835a188c3558d0c6a341e096c54909006", "transactionType": "CREATE", "contractName": "TokenizedVaultFacet", - "contractAddress": "0xBF7eb23801d1edE9fd2F3e8BfB5C0a5370A9F103", + "contractAddress": "0x6254eFd84cE152306448E2d10c4dF7DCE6C99765", "function": null, "arguments": null, "transaction": { @@ -107,18 +164,18 @@ "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", "gas": "0x2238af", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b50611e40806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aa47d5cb11610071578063aa47d5cb14610121578063ad747f2f14610134578063c978758914610147578063d588b1321461015a578063e208f10a1461016d578063ec7a37701461018057600080fd5b80631ed7db65146100ae57806333f6dfd8146100c35780635c923301146100d65780637baa1dde146100fb578063a6cd857d1461010e575b600080fd5b6100c16100bc366004611b64565b610193565b005b6100c16100d1366004611b96565b6102cf565b6100e96100e4366004611bc2565b610313565b60405190815260200160405180910390f35b6100e9610109366004611bc2565b610328565b6100c161011c366004611b96565b610334565b6100c161012f366004611bc2565b6103ff565b6100c1610142366004611bc2565b61059d565b6100c1610155366004611b96565b6105df565b6100e9610168366004611b96565b61066d565b6100e961017b366004611be4565b610684565b6100c161018e366004611b64565b61068f565b6000356001600160e01b0319166101a9816106e3565b156101cf5760405162461bcd60e51b81526004016101c690611bfd565b60405180910390fd5b60026101d9610721565b600301540361022a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b6002610234610721565b6003015582600061024482610745565b945050505050806001600160a01b0316336001600160a01b0316146102ab5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c7920777261707065722063616c6c7320616c6c6f77656400000000000060448201526064016101c6565b6102b7878787876108d9565b50505060016102c4610721565b600301555050505050565b6000356001600160e01b0319166102e5816106e3565b156103025760405162461bcd60e51b81526004016101c690611bfd565b61030d848484610b6d565b50505050565b600061031f8383610dea565b90505b92915050565b600061031f8383610e14565b6000356001600160e01b03191661034a816106e3565b156103675760405162461bcd60e51b81526004016101c690611bfd565b6002610371610721565b60030154036103c25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b60026103cc610721565b6003015560006103db33610e3f565b90506103e9818686866108d9565b505060016103f5610721565b6003015550505050565b6000356001600160e01b031916610415816106e3565b156104325760405162461bcd60e51b81526004016101c690611bfd565b61043b33610e3f565b6040518060400160405280601881526020017f506179204469766964656e642046726f6d20456e74697479000000000000000081525061048e8261047e83610e70565b61048733610e7b565b9190610e90565b6104ff5761049b33610e7b565b8260006104b1826104ab33610e7b565b90610eeb565b146104d0576104cb6104c6856104ab33610e7b565b610f16565b6104e1565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101c69493929190611c6f565b600061050a33610e3f565b9050600061051782610f47565b519050856105258383610dea565b10156105875760405162461bcd60e51b815260206004820152602b60248201527f7061794469766964656e6446726f6d456e746974793a20696e7375666669636960448201526a656e742062616c616e636560a81b60648201526084016101c6565b610594878384848a610fd2565b50505050505050565b6000356001600160e01b0319166105b3816106e3565b156105d05760405162461bcd60e51b81526004016101c690611bfd565b6105da83836112f6565b505050565b6000356001600160e01b0319166105f5816106e3565b156106125760405162461bcd60e51b81526004016101c690611bfd565b61061a6113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061064d8261047e83610e70565b61065a5761049b33610e7b565b6106658686866113d7565b505050505050565b600061067a848484611602565b90505b9392505050565b60006103228261168c565b6106976113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506106ca8261047e83610e70565b6106d75761049b33610e7b565b610594868686866108d9565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600080606080600080610756610721565b6000888152600a82016020908152604080832054600b8501835281842054600c86019093529220805492995090975091925061079190611ca0565b80601f01602080910402602001604051908101604052809291908181526020018280546107bd90611ca0565b801561080a5780601f106107df5761010080835404028352916020019161080a565b820191906000526020600020905b8154815290600101906020018083116107ed57829003601f168201915b50505060008a8152600d85016020526040902080549397509261082f92509050611ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461085b90611ca0565b80156108a85780601f1061087d576101008083540402835291602001916108a8565b820191906000526020600020905b81548152906001019060200180831161088b57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b6000806108e4610721565b600085815260158201602090815260408083208a84529091529020549091508311156109625760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101c6565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161099c91611cf0565b1015610a105760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101c6565b610a1a86856112f6565b6000848152601582016020908152604080832089845290915281208054859290610a45908490611cf0565b90915550506000848152601582016020908152604080832088845290915281208054859290610a75908490611d03565b90915550610a8990508686868660006116ac565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918891600080516020611deb8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918791600080516020611deb8339815191529181900360a00190a350600195945050505050565b6000610b77610721565b90506000610ba96040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b60008581526015840160209081526040808320898452909152812054919250610bd18661168c565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190610c1b85858585611880565b90508015610dde576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290610c56908490611d03565b90915550506000888152601588016020908152604080832089845290915281208054839290610c86908490611cf0565b9091555050600088815260158801602090815260408083208d845290915281208054839290610cb6908490611d03565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918891600080516020611deb8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c91600080516020611deb8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080610df5610721565b6000938452601501602090815260408085209585529490525050205490565b600080610e1f610721565b600094855260270160209081526040808620948652939052505090205490565b600080610e4a610721565b90506000610e5784610e7b565b6000908152600a90920160205250604090205492915050565b6000610322826118d0565b60601b6bffffffffffffffffffffffff191690565b6000610e9d8484846118eb565b15610eaa5750600161067d565b610eb584848461190d565b15610ec25750600161067d565b610ed484610ece6113a9565b8461190d565b15610ee15750600161067d565b5060009392505050565b600080610ef6610721565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610f7a610721565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600081116110225760405162461bcd60e51b815260206004820152601b60248201527f6469766964656e6420616d6f756e74206d757374206265203e2030000000000060448201526064016101c6565b61102b8261197d565b6110775760405162461bcd60e51b815260206004820181905260248201527f6d75737420626520737570706f72746564206469766964656e6420746f6b656e60448201526064016101c6565b611080856119bd565b156110e05760405162461bcd60e51b815260206004820152602a60248201527f6e6f6e756e69717565206469766964656e6420646973747269627574696f6e2060448201526934b232b73a34b334b2b960b11b60648201526084016101c6565b60006110ea610721565b9050600061111c6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b90506111278561168c565b6000036111405761113a868686866108d9565b5061129a565b61114c868286866108d9565b506000858152601b83016020908152604080832087845290915281208054859290611178908490611d03565b90915550506000858152601983016020908152604080832087845290915290205460ff161580156111c457506000858152601a8301602090815260408083208380529091529020548414155b1561129a576111d16119e0565b600086815260188401602052604090205460ff91909116116112355760405162461bcd60e51b815260206004820152601d60248201527f65786365656473206d6178206469762064656e6f6d696e6174696f6e7300000060448201526064016101c6565b6000858152601883016020818152604080842080546019880184528286208a87528452828620805460ff191660ff9283161790558a8652601a880184528286208254909116865283529084208890559181528154600181018355918352909120018490555b6112a3876119f8565b60408051878152602081018790529081018590526060810184905287907f79c99b7b895cb77cf516bfda80c5416e57f9e3811cd24fa42b139bf7b9ab29679060800160405180910390a250505050505050565b6000611300610721565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561135b57602002820191906000526020600020905b815481526020019060010190808311611347575b5050505050905060005b81518110156113a257611392858584848151811061138557611385611d16565b6020026020010151610b6d565b61139b81611d2c565b9050611365565b5050505050565b60006113d26040518060400160405280600681526020016553797374656d60d01b815250610e70565b905090565b60006113e1610721565b6000848152601582016020908152604080832088845290915290205490915082111561145b5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016101c6565b6000848152602782016020908152604080832086845282528083205460158501835281842088855290925290912054839161149591611cf0565b10156115095760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016101c6565b61151384846112f6565b600083815260168201602052604081208054849290611533908490611cf0565b90915550506000838152601582016020908152604080832087845290915281208054849290611563908490611cf0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916115ac91611d45565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611deb833981519152916115f491889190611d78565b60405180910390a350505050565b60008061160d610721565b600085815260158201602090815260408083208984529091528120549192506116358661168c565b6000878152601b8501602090815260408083208984528252808320548a8452601c880183528184208a855283528184208c8552909252909120549192509061167f84848484611880565b9998505050505050505050565b600080611697610721565b60009384526016016020525050604090205490565b60006116b6610721565b905060006116c38561168c565b600086815260188401602090815260408083208054825181850281018501909352808352949550929390929183018282801561171e57602002820191906000526020600020905b81548152602001906001019080831161170a575b5050505050905060005b815181101561187557600082828151811061174557611745611d16565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061177b89878484611880565b60008b8152601c89016020908152604080832087845282528083208f84529091528120805492935083929091906117b3908490611d03565b90915550508b156117f75760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906117f1908490611cf0565b90915550505b87156118615760008a8152601b8801602090815260408083208684529091529020548690611826908b90611db1565b6118309190611dc8565b60008b8152601b8901602090815260408083208784529091528120805490919061185b908490611d03565b90915550505b5050508061186e90611d2c565b9050611728565b505050505050505050565b60008061188d8685611db1565b9050600085156118a6576118a18683611dc8565b6118a9565b60005b9050808410156118c2576118bd8482611cf0565b6118c5565b60005b979650505050505050565b600081516000036118e357506000919050565b506020015190565b6000806118f785611adf565b905061190481858561190d565b95945050505050565b600080611918610721565b6000868152601f820160209081526040808320888452909152902054909150801580159061196157506000818152601d83016020908152604080832087845290915290205460ff165b156119715760019250505061067d565b50600095945050505050565b600080611988610721565b905080601301600061199985611aff565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000806119c8610721565b60009384526009016020525050604090205460ff1690565b6000806119eb610721565b6017015460ff1692915050565b6000611a02610721565b600083815260098201602052604090205490915060ff1615611a7f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101c6565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b600080611aea610721565b6000938452600a016020525050604090205490565b60006bffffffffffffffffffffffff821615611b5d5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016101c6565b5060601c90565b60008060008060808587031215611b7a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611bab57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611bd557600080fd5b50508035926020909101359150565b600060208284031215611bf657600080fd5b5035919050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b81811015611c4f57602081850181015186830182015201611c33565b506000602082860101526020601f19601f83011685010191505092915050565b848152836020820152608060408201526000611c8e6080830185611c29565b82810360608401526118c58185611c29565b600181811c90821680611cb457607f821691505b602082108103611cd457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032257610322611cda565b8082018082111561032257610322611cda565b634e487b7160e01b600052603260045260246000fd5b600060018201611d3e57611d3e611cda565b5060010190565b81815260406020820152600061031f60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061067a60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b808202811582820484141761032257610322611cda565b600082611de557634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220eca53e1057970db37363a10c1ff1f0abeeb59c54447fa3811e9a75b5b420fd0b64736f6c63430008110033", - "nonce": "0x90", + "data": "0x608060405234801561001057600080fd5b50611e40806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aa47d5cb11610071578063aa47d5cb14610121578063ad747f2f14610134578063c978758914610147578063d588b1321461015a578063e208f10a1461016d578063ec7a37701461018057600080fd5b80631ed7db65146100ae57806333f6dfd8146100c35780635c923301146100d65780637baa1dde146100fb578063a6cd857d1461010e575b600080fd5b6100c16100bc366004611b64565b610193565b005b6100c16100d1366004611b96565b6102cf565b6100e96100e4366004611bc2565b610313565b60405190815260200160405180910390f35b6100e9610109366004611bc2565b610328565b6100c161011c366004611b96565b610334565b6100c161012f366004611bc2565b6103ff565b6100c1610142366004611bc2565b61059d565b6100c1610155366004611b96565b6105df565b6100e9610168366004611b96565b61066d565b6100e961017b366004611be4565b610684565b6100c161018e366004611b64565b61068f565b6000356001600160e01b0319166101a9816106e3565b156101cf5760405162461bcd60e51b81526004016101c690611bfd565b60405180910390fd5b60026101d9610721565b600301540361022a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b6002610234610721565b6003015582600061024482610745565b945050505050806001600160a01b0316336001600160a01b0316146102ab5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c7920777261707065722063616c6c7320616c6c6f77656400000000000060448201526064016101c6565b6102b7878787876108d9565b50505060016102c4610721565b600301555050505050565b6000356001600160e01b0319166102e5816106e3565b156103025760405162461bcd60e51b81526004016101c690611bfd565b61030d848484610b6d565b50505050565b600061031f8383610dea565b90505b92915050565b600061031f8383610e14565b6000356001600160e01b03191661034a816106e3565b156103675760405162461bcd60e51b81526004016101c690611bfd565b6002610371610721565b60030154036103c25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101c6565b60026103cc610721565b6003015560006103db33610e3f565b90506103e9818686866108d9565b505060016103f5610721565b6003015550505050565b6000356001600160e01b031916610415816106e3565b156104325760405162461bcd60e51b81526004016101c690611bfd565b61043b33610e3f565b6040518060400160405280601881526020017f506179204469766964656e642046726f6d20456e74697479000000000000000081525061048e8261047e83610e70565b61048733610e7b565b9190610e90565b6104ff5761049b33610e7b565b8260006104b1826104ab33610e7b565b90610eeb565b146104d0576104cb6104c6856104ab33610e7b565b610f16565b6104e1565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016101c69493929190611c6f565b600061050a33610e3f565b9050600061051782610f47565b519050856105258383610dea565b10156105875760405162461bcd60e51b815260206004820152602b60248201527f7061794469766964656e6446726f6d456e746974793a20696e7375666669636960448201526a656e742062616c616e636560a81b60648201526084016101c6565b610594878384848a610fd2565b50505050505050565b6000356001600160e01b0319166105b3816106e3565b156105d05760405162461bcd60e51b81526004016101c690611bfd565b6105da83836112f6565b505050565b6000356001600160e01b0319166105f5816106e3565b156106125760405162461bcd60e51b81526004016101c690611bfd565b61061a6113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b81525061064d8261047e83610e70565b61065a5761049b33610e7b565b6106658686866113d7565b505050505050565b600061067a848484611602565b90505b9392505050565b60006103228261168c565b6106976113a9565b6040518060400160405280600d81526020016c53797374656d2041646d696e7360981b8152506106ca8261047e83610e70565b6106d75761049b33610e7b565b610594868686866108d9565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b600080606080600080610756610721565b6000888152600a82016020908152604080832054600b8501835281842054600c86019093529220805492995090975091925061079190611ca0565b80601f01602080910402602001604051908101604052809291908181526020018280546107bd90611ca0565b801561080a5780601f106107df5761010080835404028352916020019161080a565b820191906000526020600020905b8154815290600101906020018083116107ed57829003601f168201915b50505060008a8152600d85016020526040902080549397509261082f92509050611ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461085b90611ca0565b80156108a85780601f1061087d576101008083540402835291602001916108a8565b820191906000526020600020905b81548152906001019060200180831161088b57829003601f168201915b5050506000998a525050600e90910160205260409096205494969395929492936001600160a01b0390931692915050565b6000806108e4610721565b600085815260158201602090815260408083208a84529091529020549091508311156109625760405162461bcd60e51b815260206004820152602760248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201526662616c616e636560c81b60648201526084016101c6565b600086815260278201602090815260408083208784528252808320546015850183528184208a855290925290912054849161099c91611cf0565b1015610a105760405162461bcd60e51b815260206004820152603f60248201527f5f696e7465726e616c5472616e736665723a20696e73756666696369656e742060448201527f62616c616e636520617661696c61626c652c2066756e6473206c6f636b65640060648201526084016101c6565b610a1a86856112f6565b6000848152601582016020908152604080832089845290915281208054859290610a45908490611cf0565b90915550506000848152601582016020908152604080832088845290915281208054859290610a75908490611d03565b90915550610a8990508686868660006116ac565b60008481526015820160209081526040808320898452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918891600080516020611deb8339815191529181900360a00190a360008481526015820160209081526040808320888452825291829020548251878152918201526060818301819052601190820152702fb4b73a32b93730b62a3930b739b332b960791b6080820152905133918791600080516020611deb8339815191529181900360a00190a350600195945050505050565b6000610b77610721565b90506000610ba96040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b60008581526015840160209081526040808320898452909152812054919250610bd18661168c565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c85529092528220549293509190610c1b85858585611880565b90508015610dde576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290610c56908490611d03565b90915550506000888152601588016020908152604080832089845290915281208054839290610c86908490611cf0565b9091555050600088815260158801602090815260408083208d845290915281208054839290610cb6908490611d03565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918891600080516020611deb8339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c91600080516020611deb8339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b600080610df5610721565b6000938452601501602090815260408085209585529490525050205490565b600080610e1f610721565b600094855260270160209081526040808620948652939052505090205490565b600080610e4a610721565b90506000610e5784610e7b565b6000908152600a90920160205250604090205492915050565b6000610322826118d0565b60601b6bffffffffffffffffffffffff191690565b6000610e9d8484846118eb565b15610eaa5750600161067d565b610eb584848461190d565b15610ec25750600161067d565b610ed484610ece6113a9565b8461190d565b15610ee15750600161067d565b5060009392505050565b600080610ef6610721565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905290610f7a610721565b60009384526011016020908152604093849020845160a081018652815481526001820154928101929092526002810154948201949094526003840154606082015260049093015460ff16151560808401525090919050565b600081116110225760405162461bcd60e51b815260206004820152601b60248201527f6469766964656e6420616d6f756e74206d757374206265203e2030000000000060448201526064016101c6565b61102b8261197d565b6110775760405162461bcd60e51b815260206004820181905260248201527f6d75737420626520737570706f72746564206469766964656e6420746f6b656e60448201526064016101c6565b611080856119bd565b156110e05760405162461bcd60e51b815260206004820152602a60248201527f6e6f6e756e69717565206469766964656e6420646973747269627574696f6e2060448201526934b232b73a34b334b2b960b11b60648201526084016101c6565b60006110ea610721565b9050600061111c6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610e70565b90506111278561168c565b6000036111405761113a868686866108d9565b5061129a565b61114c868286866108d9565b506000858152601b83016020908152604080832087845290915281208054859290611178908490611d03565b90915550506000858152601983016020908152604080832087845290915290205460ff161580156111c457506000858152601a8301602090815260408083208380529091529020548414155b1561129a576111d16119e0565b600086815260188401602052604090205460ff91909116116112355760405162461bcd60e51b815260206004820152601d60248201527f65786365656473206d6178206469762064656e6f6d696e6174696f6e7300000060448201526064016101c6565b6000858152601883016020818152604080842080546019880184528286208a87528452828620805460ff191660ff9283161790558a8652601a880184528286208254909116865283529084208890559181528154600181018355918352909120018490555b6112a3876119f8565b60408051878152602081018790529081018590526060810184905287907f79c99b7b895cb77cf516bfda80c5416e57f9e3811cd24fa42b139bf7b9ab29679060800160405180910390a250505050505050565b6000611300610721565b600083815260188201602090815260408083208054825181850281018501909352808352949550929390929183018282801561135b57602002820191906000526020600020905b815481526020019060010190808311611347575b5050505050905060005b81518110156113a257611392858584848151811061138557611385611d16565b6020026020010151610b6d565b61139b81611d2c565b9050611365565b5050505050565b60006113d26040518060400160405280600681526020016553797374656d60d01b815250610e70565b905090565b60006113e1610721565b6000848152601582016020908152604080832088845290915290205490915082111561145b5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016101c6565b6000848152602782016020908152604080832086845282528083205460158501835281842088855290925290912054839161149591611cf0565b10156115095760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016101c6565b61151384846112f6565b600083815260168201602052604081208054849290611533908490611cf0565b90915550506000838152601582016020908152604080832087845290915281208054849290611563908490611cf0565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916115ac91611d45565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611deb833981519152916115f491889190611d78565b60405180910390a350505050565b60008061160d610721565b600085815260158201602090815260408083208984529091528120549192506116358661168c565b6000878152601b8501602090815260408083208984528252808320548a8452601c880183528184208a855283528184208c8552909252909120549192509061167f84848484611880565b9998505050505050505050565b600080611697610721565b60009384526016016020525050604090205490565b60006116b6610721565b905060006116c38561168c565b600086815260188401602090815260408083208054825181850281018501909352808352949550929390929183018282801561171e57602002820191906000526020600020905b81548152602001906001019080831161170a575b5050505050905060005b815181101561187557600082828151811061174557611745611d16565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061177b89878484611880565b60008b8152601c89016020908152604080832087845282528083208f84529091528120805492935083929091906117b3908490611d03565b90915550508b156117f75760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906117f1908490611cf0565b90915550505b87156118615760008a8152601b8801602090815260408083208684529091529020548690611826908b90611db1565b6118309190611dc8565b60008b8152601b8901602090815260408083208784529091528120805490919061185b908490611d03565b90915550505b5050508061186e90611d2c565b9050611728565b505050505050505050565b60008061188d8685611db1565b9050600085156118a6576118a18683611dc8565b6118a9565b60005b9050808410156118c2576118bd8482611cf0565b6118c5565b60005b979650505050505050565b600081516000036118e357506000919050565b506020015190565b6000806118f785611adf565b905061190481858561190d565b95945050505050565b600080611918610721565b6000868152601f820160209081526040808320888452909152902054909150801580159061196157506000818152601d83016020908152604080832087845290915290205460ff165b156119715760019250505061067d565b50600095945050505050565b600080611988610721565b905080601301600061199985611aff565b6001600160a01b0316815260208101919091526040016000205460ff169392505050565b6000806119c8610721565b60009384526009016020525050604090205460ff1690565b6000806119eb610721565b6017015460ff1692915050565b6000611a02610721565b600083815260098201602052604090205490915060ff1615611a7f5760405162461bcd60e51b815260206004820152603060248201527f6f626a656374496420697320616c7265616479206265696e672075736564206260448201526f1e48185b9bdd1a195c881bd89a9958dd60821b60648201526084016101c6565b60008281526009820160209081526040808320805460ff1916600117905580518581529182018390528101919091527f9fb7dddab90560d1bc2dde3bc7b32ef04cecc68a7252560d922843b30c84bc8b9060600160405180910390a15050565b600080611aea610721565b6000938452600a016020525050604090205490565b60006bffffffffffffffffffffffff821615611b5d5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e2061646472657373000060448201526064016101c6565b5060601c90565b60008060008060808587031215611b7a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215611bab57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611bd557600080fd5b50508035926020909101359150565b600060208284031215611bf657600080fd5b5035919050565b602080825260129082015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b604082015260600190565b6000815180845260005b81811015611c4f57602081850181015186830182015201611c33565b506000602082860101526020601f19601f83011685010191505092915050565b848152836020820152608060408201526000611c8e6080830185611c29565b82810360608401526118c58185611c29565b600181811c90821680611cb457607f821691505b602082108103611cd457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032257610322611cda565b8082018082111561032257610322611cda565b634e487b7160e01b600052603260045260246000fd5b600060018201611d3e57611d3e611cda565b5060010190565b81815260406020820152600061031f60408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b82815281602082015260606040820152600061067a60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b808202811582820484141761032257610322611cda565b600082611de557634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220c76ca0c882bfa45b386f8292617eff197ebaff97f26b05c6dbe13a7b5bbc394c64736f6c63430008110033", + "nonce": "0x9c", "accessList": [] }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0xcec94caaef976617c76a15e425308c2b3f9a35c834cab219f1dceff062df9e45", + "hash": "0xddff632ab38e431289502ce39590e6d81b930bb582131505717b5e36f76a2922", "transactionType": "CREATE", "contractName": "TokenizedVaultIOFacet", - "contractAddress": "0x50b4b25FD93ec0EF55a369247b90684E69D5E95D", + "contractAddress": "0x8fe69c524112F080A15d409f7c68B56248541266", "function": null, "arguments": null, "transaction": { @@ -126,27 +183,27 @@ "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", "gas": "0x1bcfdd", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b50611868806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313b747601461003b5780639bda867814610050575b600080fd5b61004e610049366004611548565b610063565b005b61004e61005e36600461158c565b610291565b6000356001600160e01b03191661007981610476565b156100c05760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026100ca6104b4565b600301540361011b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b60026101256104b4565b60030155610132336104d8565b6040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e746974790000008152506101858261017583610509565b61017e3361051a565b919061052f565b6101f6576101923361051a565b8260006101a8826101a23361051a565b9061058b565b146101c7576101c26101bd856101a23361051a565b6105b6565b6101d8565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016100b79493929190611606565b6102466102028761051a565b886102416040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e74697479000000815250610509565b61052f565b61026e57604051635e81202760e01b81526001600160a01b03871660048201526024016100b7565b61027a878787876105e7565b505060016102866104b4565b600301555050505050565b6000356001600160e01b0319166102a781610476565b156102e95760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016100b7565b60026102f36104b4565b60030154036103445760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b600261034e6104b4565b6003015561035b336104d8565b6040518060400160405280601081526020016f115e1d195c9b985b0811195c1bdcda5d60821b8152506103918261017583610509565b61039e576101923361051a565b6103a785610632565b6103f35760405162461bcd60e51b815260206004820152601f60248201527f6578744465706f7369743a20696e76616c696420455243323020746f6b656e0060448201526064016100b7565b60006103fe336104d8565b905061040981610662565b6104555760405162461bcd60e51b815260206004820152601c60248201527f6578744465706f7369743a20696e76616c69642072656365697665720000000060448201526064016100b7565b610460818787610685565b505050600161046d6104b4565b60030155505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806104e36104b4565b905060006104f08461051a565b6000908152600a90920160205250604090205492915050565b6000610514826106fd565b92915050565b60601b6bffffffffffffffffffffffff191690565b600061053c848484610718565b1561054957506001610584565b61055484848461073a565b1561056157506001610584565b6105738461056d6107aa565b8461073a565b1561058057506001610584565b5060005b9392505050565b6000806105966104b4565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b806000036106085760405163959ed6e560e01b815260040160405180910390fd5b60006106138361051a565b90506106208582846107d8565b61062b838584610a03565b5050505050565b60008061063d6104b4565b6001600160a01b03909316600090815260139093016020525050604090205460ff1690565b60008061066d6104b4565b6000938452600f016020525050604090205460ff1690565b806000036106a65760405163806daf1160e01b815260040160405180910390fd5b60006106b18361051a565b905060006106bf8430610ab9565b90506106cd84333086610bda565b60006106d98530610ab9565b905060006106e7838361164d565b90506106f4878583610ca0565b50505050505050565b6000815160000361071057506000919050565b506020015190565b60008061072485610e48565b905061073181858561073a565b95945050505050565b6000806107456104b4565b6000868152601f820160209081526040808320888452909152902054909150801580159061078e57506000818152601d83016020908152604080832087845290915290205460ff165b1561079e57600192505050610584565b50600095945050505050565b60006107d36040518060400160405280600681526020016553797374656d60d01b815250610509565b905090565b60006107e26104b4565b6000848152601582016020908152604080832088845290915290205490915082111561085c5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016100b7565b600084815260278201602090815260408083208684528252808320546015850183528184208885529092529091205483916108969161164d565b101561090a5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016100b7565b6109148484610e68565b60008381526016820160205260408120805484929061093490849061164d565b9091555050600083815260158201602090815260408083208784529091528120805484929061096490849061164d565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916109ad91611660565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f591889190611693565b60405180910390a350505050565b610a0c83610f14565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610a6891906116d4565b6000604051808303816000865af19150503d8060008114610aa5576040519150601f19603f3d011682016040523d82523d6000602084013e610aaa565b606091505b509150915061062b8282610f79565b6000610ac483610f14565b604080516001600160a01b0384811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092839290871691610b1c91906116d4565b6000604051808303816000865af19150503d8060008114610b59576040519150601f19603f3d011682016040523d82523d6000602084013e610b5e565b606091505b50915091508115610b865780806020019051810190610b7d91906116f0565b92505050610514565b60405162461bcd60e51b8152602060048201526024808201527f4c696245524332303a2063616c6c20746f2062616c616e63654f6628292066616044820152631a5b195960e21b60648201526084016100b7565b610be384610f14565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610c4791906116d4565b6000604051808303816000865af19150503d8060008114610c84576040519150601f19603f3d011682016040523d82523d6000602084013e610c89565b606091505b5091509150610c988282610f79565b505050505050565b82600003610cfc5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b60648201526084016100b7565b60008111610d4c5760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e730060448201526064016100b7565b6000610d566104b4565b9050610d676000858585600161106b565b600083815260168201602052604081208054849290610d87908490611709565b90915550506000838152601582016020908152604080832087845290915281208054849290610db7908490611709565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091610e009161171c565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f59188919061174f565b600080610e536104b4565b6000938452600a016020525050604090205490565b6000610e726104b4565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015610ecd57602002820191906000526020600020905b815481526020019060010190808311610eb9575b5050505050905060005b815181101561062b57610f048585848481518110610ef757610ef7611788565b602002602001015161123f565b610f0d8161179e565b9050610ed7565b803b80610f755760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b60648201526084016100b7565b5050565b811561100057805115610f755780806020019051810190610f9a91906117b7565b610f755760405162461bcd60e51b815260206004820152603160248201527f4c696245524332303a207472616e73666572206f72207472616e7366657246726044820152706f6d2072657475726e65642066616c736560781b60648201526084016100b7565b80511561100f57805181602001fd5b60405162461bcd60e51b815260206004820152602b60248201527f4c696245524332303a207472616e73666572206f72207472616e73666572467260448201526a1bdb481c995d995c9d195960aa1b60648201526084016100b7565b60006110756104b4565b90506000611082856114bc565b60008681526018840160209081526040808320805482518185028101850190935280835294955092939092918301828280156110dd57602002820191906000526020600020905b8154815260200190600101908083116110c9575b5050505050905060005b815181101561123457600082828151811061110457611104611788565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061113a898784846114dc565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611172908490611709565b90915550508b156111b65760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906111b090849061164d565b90915550505b87156112205760008a8152601b88016020908152604080832086845290915290205486906111e5908b906117d9565b6111ef91906117f0565b60008b8152601b8901602090815260408083208784529091528120805490919061121a908490611709565b90915550505b5050508061122d9061179e565b90506110e7565b505050505050505050565b60006112496104b4565b9050600061127b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610509565b600085815260158401602090815260408083208984529091528120549192506112a3866114bc565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c855290925282205492935091906112ed858585856114dc565b905080156114b0576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290611328908490611709565b9091555050600088815260158801602090815260408083208984529091528120805483929061135890849061164d565b9091555050600088815260158801602090815260408083208d845290915281208054839290611388908490611709565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206118138339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206118138339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b6000806114c76104b4565b60009384526016016020525050604090205490565b6000806114e986856117d9565b905060008515611502576114fd86836117f0565b611505565b60005b90508084101561151e57611519848261164d565b611521565b60005b979650505050505050565b80356001600160a01b038116811461154357600080fd5b919050565b6000806000806080858703121561155e57600080fd5b8435935061156e6020860161152c565b925061157c6040860161152c565b9396929550929360600135925050565b6000806040838503121561159f57600080fd5b6115a88361152c565b946020939093013593505050565b60005b838110156115d15781810151838201526020016115b9565b50506000910152565b600081518084526115f28160208601602086016115b6565b601f01601f19169290920160200192915050565b84815283602082015260806040820152600061162560808301856115da565b828103606084015261152181856115da565b634e487b7160e01b600052601160045260246000fd5b8181038181111561051457610514611637565b81815260406020820152600061058460408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b949350505050565b600082516116e68184602087016115b6565b9190910192915050565b60006020828403121561170257600080fd5b5051919050565b8082018082111561051457610514611637565b81815260406020820152600061058460408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6000600182016117b0576117b0611637565b5060010190565b6000602082840312156117c957600080fd5b8151801515811461058457600080fd5b808202811582820484141761051457610514611637565b60008261180d57634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba264697066735822122095b5a38369caf629c241f131b0afbdf1ec7fee3db6c449a92fae5439a4027bac64736f6c63430008110033", - "nonce": "0x91", + "data": "0x608060405234801561001057600080fd5b50611868806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313b747601461003b5780639bda867814610050575b600080fd5b61004e610049366004611548565b610063565b005b61004e61005e36600461158c565b610291565b6000356001600160e01b03191661007981610476565b156100c05760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064015b60405180910390fd5b60026100ca6104b4565b600301540361011b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b60026101256104b4565b60030155610132336104d8565b6040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e746974790000008152506101858261017583610509565b61017e3361051a565b919061052f565b6101f6576101923361051a565b8260006101a8826101a23361051a565b9061058b565b146101c7576101c26101bd856101a23361051a565b6105b6565b6101d8565b604051806020016040528060008152505b83604051630696a9cb60e51b81526004016100b79493929190611606565b6102466102028761051a565b886102416040518060400160405280601d81526020017f45787465726e616c2057697468647261772046726f6d20456e74697479000000815250610509565b61052f565b61026e57604051635e81202760e01b81526001600160a01b03871660048201526024016100b7565b61027a878787876105e7565b505060016102866104b4565b600301555050505050565b6000356001600160e01b0319166102a781610476565b156102e95760405162461bcd60e51b8152602060048201526012602482015271199d5b98dd1a5bdb881a5cc81b1bd8dad95960721b60448201526064016100b7565b60026102f36104b4565b60030154036103445760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b7565b600261034e6104b4565b6003015561035b336104d8565b6040518060400160405280601081526020016f115e1d195c9b985b0811195c1bdcda5d60821b8152506103918261017583610509565b61039e576101923361051a565b6103a785610632565b6103f35760405162461bcd60e51b815260206004820152601f60248201527f6578744465706f7369743a20696e76616c696420455243323020746f6b656e0060448201526064016100b7565b60006103fe336104d8565b905061040981610662565b6104555760405162461bcd60e51b815260206004820152601c60248201527f6578744465706f7369743a20696e76616c69642072656365697665720000000060448201526064016100b7565b610460818787610685565b505050600161046d6104b4565b60030155505050565b6001600160e01b03191660009081527f47f677dbe524b93b2c36e6f8027a75c4906479c31df070fdbea83211f1a26050602052604090205460ff1690565b7f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790565b6000806104e36104b4565b905060006104f08461051a565b6000908152600a90920160205250604090205492915050565b6000610514826106fd565b92915050565b60601b6bffffffffffffffffffffffff191690565b600061053c848484610718565b1561054957506001610584565b61055484848461073a565b1561056157506001610584565b6105738461056d6107aa565b8461073a565b1561058057506001610584565b5060005b9392505050565b6000806105966104b4565b6000948552601f0160209081526040808620948652939052505090205490565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b806000036106085760405163959ed6e560e01b815260040160405180910390fd5b60006106138361051a565b90506106208582846107d8565b61062b838584610a03565b5050505050565b60008061063d6104b4565b6001600160a01b03909316600090815260139093016020525050604090205460ff1690565b60008061066d6104b4565b6000938452600f016020525050604090205460ff1690565b806000036106a65760405163806daf1160e01b815260040160405180910390fd5b60006106b18361051a565b905060006106bf8430610ab9565b90506106cd84333086610bda565b60006106d98530610ab9565b905060006106e7838361164d565b90506106f4878583610ca0565b50505050505050565b6000815160000361071057506000919050565b506020015190565b60008061072485610e48565b905061073181858561073a565b95945050505050565b6000806107456104b4565b6000868152601f820160209081526040808320888452909152902054909150801580159061078e57506000818152601d83016020908152604080832087845290915290205460ff165b1561079e57600192505050610584565b50600095945050505050565b60006107d36040518060400160405280600681526020016553797374656d60d01b815250610509565b905090565b60006107e26104b4565b6000848152601582016020908152604080832088845290915290205490915082111561085c5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c616044820152626e636560e81b60648201526084016100b7565b600084815260278201602090815260408083208684528252808320546015850183528184208885529092529091205483916108969161164d565b101561090a5760405162461bcd60e51b815260206004820152603b60248201527f5f696e7465726e616c4275726e3a20696e73756666696369656e742062616c6160448201527f6e636520617661696c61626c652c2066756e6473206c6f636b6564000000000060648201526084016100b7565b6109148484610e68565b60008381526016820160205260408120805484929061093490849061164d565b9091555050600083815260158201602090815260408083208784529091528120805484929061096490849061164d565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb00447550916109ad91611660565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f591889190611693565b60405180910390a350505050565b610a0c83610f14565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610a6891906116d4565b6000604051808303816000865af19150503d8060008114610aa5576040519150601f19603f3d011682016040523d82523d6000602084013e610aaa565b606091505b509150915061062b8282610f79565b6000610ac483610f14565b604080516001600160a01b0384811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b1790529151600092839290871691610b1c91906116d4565b6000604051808303816000865af19150503d8060008114610b59576040519150601f19603f3d011682016040523d82523d6000602084013e610b5e565b606091505b50915091508115610b865780806020019051810190610b7d91906116f0565b92505050610514565b60405162461bcd60e51b8152602060048201526024808201527f4c696245524332303a2063616c6c20746f2062616c616e63654f6628292066616044820152631a5b195960e21b60648201526084016100b7565b610be384610f14565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610c4791906116d4565b6000604051808303816000865af19150503d8060008114610c84576040519150601f19603f3d011682016040523d82523d6000602084013e610c89565b606091505b5091509150610c988282610f79565b505050505050565b82600003610cfc5760405162461bcd60e51b815260206004820152602360248201527f5f696e7465726e616c4d696e743a206d696e7420746f207a65726f206164647260448201526265737360e81b60648201526084016100b7565b60008111610d4c5760405162461bcd60e51b815260206004820152601f60248201527f5f696e7465726e616c4d696e743a206d696e74207a65726f20746f6b656e730060448201526064016100b7565b6000610d566104b4565b9050610d676000858585600161106b565b600083815260168201602052604081208054849290610d87908490611709565b90915550506000838152601582016020908152604080832087845290915281208054849290610db7908490611709565b9091555050600083815260168201602052604090819020549051339185917fb265507be3deb826a9f1ee89ff597f0214103a39d059c667755462fb0044755091610e009161171c565b60405180910390a3600083815260158201602090815260408083208784529091529081902054905133918691600080516020611813833981519152916109f59188919061174f565b600080610e536104b4565b6000938452600a016020525050604090205490565b6000610e726104b4565b6000838152601882016020908152604080832080548251818502810185019093528083529495509293909291830182828015610ecd57602002820191906000526020600020905b815481526020019060010190808311610eb9575b5050505050905060005b815181101561062b57610f048585848481518110610ef757610ef7611788565b602002602001015161123f565b610f0d8161179e565b9050610ed7565b803b80610f755760405162461bcd60e51b815260206004820152602960248201527f4c696245524332303a20455243323020746f6b656e206164647265737320686160448201526873206e6f20636f646560b81b60648201526084016100b7565b5050565b811561100057805115610f755780806020019051810190610f9a91906117b7565b610f755760405162461bcd60e51b815260206004820152603160248201527f4c696245524332303a207472616e73666572206f72207472616e7366657246726044820152706f6d2072657475726e65642066616c736560781b60648201526084016100b7565b80511561100f57805181602001fd5b60405162461bcd60e51b815260206004820152602b60248201527f4c696245524332303a207472616e73666572206f72207472616e73666572467260448201526a1bdb481c995d995c9d195960aa1b60648201526084016100b7565b60006110756104b4565b90506000611082856114bc565b60008681526018840160209081526040808320805482518185028101850190935280835294955092939092918301828280156110dd57602002820191906000526020600020905b8154815260200190600101908083116110c9575b5050505050905060005b815181101561123457600082828151811061110457611104611788565b60209081029190910181015160008a8152601b880183526040808220838352909352918220549092509061113a898784846114dc565b60008b8152601c89016020908152604080832087845282528083208f8452909152812080549293508392909190611172908490611709565b90915550508b156111b65760008a8152601c88016020908152604080832086845282528083208f8452909152812080548392906111b090849061164d565b90915550505b87156112205760008a8152601b88016020908152604080832086845290915290205486906111e5908b906117d9565b6111ef91906117f0565b60008b8152601b8901602090815260408083208784529091528120805490919061121a908490611709565b90915550505b5050508061122d9061179e565b90506110e7565b505050505050505050565b60006112496104b4565b9050600061127b6040518060400160405280600d81526020016c4469766964656e642042616e6b60981b815250610509565b600085815260158401602090815260408083208984529091528120549192506112a3866114bc565b6000878152601b8601602090815260408083208984528252808320548a8452601c890183528184208a855283528184208c855290925282205492935091906112ed858585856114dc565b905080156114b0576000898152601c8801602090815260408083208b845282528083208d845290915281208054839290611328908490611709565b9091555050600088815260158801602090815260408083208984529091528120805483929061135890849061164d565b9091555050600088815260158801602090815260408083208d845290915281208054839290611388908490611709565b9091555050600088815260158801602090815260408083208984528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b60808201529051339188916000805160206118138339815191529181900360a00190a3600088815260158801602090815260408083208d84528252918290205482518b81529182015260608183018190526011908201527017ddda5d1a191c985dd11a5d9a59195b99607a1b6080820152905133918c916000805160206118138339815191529181900360a00190a3604080518a815260208101879052908101899052606081018290528a907f0d82da9eb27a31b03c76abe0ad0111a09d0303dd0942342cc087604c6d04d6e49060800160405180910390a25b50505050505050505050565b6000806114c76104b4565b60009384526016016020525050604090205490565b6000806114e986856117d9565b905060008515611502576114fd86836117f0565b611505565b60005b90508084101561151e57611519848261164d565b611521565b60005b979650505050505050565b80356001600160a01b038116811461154357600080fd5b919050565b6000806000806080858703121561155e57600080fd5b8435935061156e6020860161152c565b925061157c6040860161152c565b9396929550929360600135925050565b6000806040838503121561159f57600080fd5b6115a88361152c565b946020939093013593505050565b60005b838110156115d15781810151838201526020016115b9565b50506000910152565b600081518084526115f28160208601602086016115b6565b601f01601f19169290920160200192915050565b84815283602082015260806040820152600061162560808301856115da565b828103606084015261152181856115da565b634e487b7160e01b600052601160045260246000fd5b8181038181111561051457610514611637565b81815260406020820152600061058460408301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c2fb4b73a32b93730b6213ab93760991b602082015260400190565b949350505050565b600082516116e68184602087016115b6565b9190910192915050565b60006020828403121561170257600080fd5b5051919050565b8082018082111561051457610514611637565b81815260406020820152600061058460408301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b8281528160208201526060604082015260006116cc60608301600d81526c17da5b9d195c9b985b135a5b9d609a1b602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6000600182016117b0576117b0611637565b5060010190565b6000602082840312156117c957600080fd5b8151801515811461058457600080fd5b808202811582820484141761051457610514611637565b60008261180d57634e487b7160e01b600052601260045260246000fd5b50049056fe2a6b96e51c5252b8e3666030ed958aec041736a7af1773a4e5833bac27b47e3ba2646970667358221220e323c0b7b09bc0df683e4a3f7d17b66ea0ed3195031fa630c20c6f8deedaeafc64736f6c63430008110033", + "nonce": "0x9d", "accessList": [] }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x877c944c179070efdd86d6c363c01b10bb96dcb580606c2c5c586d9febee1df6", + "hash": "0x97cee138978692be5f50fe8874350c8aba974b0e2695c57141895d9ee0a8f811", "transactionType": "CREATE", "contractName": "UserFacet", - "contractAddress": "0xA6Bdec732f857522338A29d0Dd508ABe33Eb3B8F", + "contractAddress": "0x65C37f11879ab9aBAB518457e665C45AaF074DB7", "function": null, "arguments": null, "transaction": { "type": "0x02", "from": "0x931c3ac09202650148edb2316e97815f904cf4fa", - "gas": "0x818ca", + "gas": "0x818d9", "value": "0x0", - "data": "0x608060405234801561001057600080fd5b5061066c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633f1b887f1461005157806353b66f36146100815780639cb481b2146100a2578063afab5f15146100b5575b600080fd5b61006461005f366004610550565b6100ca565b6040516001600160a01b0390911681526020015b60405180910390f35b61009461008f366004610550565b6100db565b604051908152602001610078565b6100946100b0366004610569565b61010e565b6100c86100c3366004610592565b610124565b005b60006100d58261028e565b92915050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546100d5565b60006100d58260601b6001600160601b03191690565b61012c6102f3565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506101768261016183610321565b6001600160601b03193360601b16919061032c565b61022d573360601b6001600160601b0319168260006101cc82845b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b146101f5576101f06101eb856001600160601b03193360601b16610191565b610388565b610206565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161022494939291906105fa565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460ff1661027e5760405163e1f8801360e01b815260048101849052602401610224565b61028884846103b9565b50505050565b60006bffffffffffffffffffffffff8216156102ec5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610224565b5060601c90565b600061031c6040518060400160405280600681526020016553797374656d60d01b815250610321565b905090565b60006100d582610452565b600061033984848461046d565b1561034657506001610381565b6103518484846104af565b1561035e57506001610381565b6103708461036a6102f3565b846104af565b1561037d57506001610381565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020908152604080832084905580518581529182018490528181019290925290517f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7917f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab5919081900360600190a1505050565b6000815160000361046557506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546104a68185856104af565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790801580159061053457506000818152601d83016020908152604080832087845290915290205460ff165b1561054457600192505050610381565b50600095945050505050565b60006020828403121561056257600080fd5b5035919050565b60006020828403121561057b57600080fd5b81356001600160a01b038116811461038157600080fd5b600080604083850312156105a557600080fd5b50508035926020909101359150565b6000815180845260005b818110156105da576020818501810151868301820152016105be565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061061960808301856105b4565b828103606084015261062b81856105b4565b97965050505050505056fea264697066735822122017042b0a4d26002e8a9cb40d0337596233be1a65626cd11bc31462a5b0cd133364736f6c63430008110033", - "nonce": "0x92", + "data": "0x608060405234801561001057600080fd5b5061066c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633f1b887f1461005157806353b66f36146100815780639cb481b2146100a2578063afab5f15146100b5575b600080fd5b61006461005f366004610550565b6100ca565b6040516001600160a01b0390911681526020015b60405180910390f35b61009461008f366004610550565b6100db565b604051908152602001610078565b6100946100b0366004610569565b61010e565b6100c86100c3366004610592565b610124565b005b60006100d58261028e565b92915050565b60008181527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546100d5565b60006100d58260601b6001600160601b03191690565b61012c6102f3565b6040518060400160405280600f81526020016e53797374656d204d616e616765727360881b8152506101768261016183610321565b6001600160601b03193360601b16919061032c565b61022d573360601b6001600160601b0319168260006101cc82845b60009081527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe660209081526040808320938352929052205490565b146101f5576101f06101eb856001600160601b03193360601b16610191565b610388565b610206565b604051806020016040528060008152505b83604051630696a9cb60e51b815260040161022494939291906105fa565b60405180910390fd5b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd6602052604090205460ff1661027e5760405163e1f8801360e01b815260048101849052602401610224565b61028884846103b9565b50505050565b60006bffffffffffffffffffffffff8216156102ec5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642065787465726e616c20746f6b656e206164647265737300006044820152606401610224565b5060601c90565b600061031c6040518060400160405280600681526020016553797374656d60d01b815250610321565b905090565b60006100d582610452565b600061033984848461046d565b1561034657506001610381565b6103518484846104af565b1561035e57506001610381565b6103708461036a6102f3565b846104af565b1561037d57506001610381565b5060005b9392505050565b6040805160208082528183019092526060916000919060208201818036833750505060208101939093525090919050565b60008281527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd16020908152604080832084905580518581529182018490528181019290925290517f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc7917f75fe123d6e4fefc1cc7cbe5429b96661283390b4c03474cdcc3075cb4462aab5919081900360600190a1505050565b6000815160000361046557506000919050565b506020015190565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfd160205260408120546104a68185856104af565b95945050505050565b60008381527f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfe6602090815260408083208584529091528120547f1ab5ce5b595c6e94c5fba2e588bf4eafa8b384a4fb6e188b892768e695c1bfc790801580159061053457506000818152601d83016020908152604080832087845290915290205460ff165b1561054457600192505050610381565b50600095945050505050565b60006020828403121561056257600080fd5b5035919050565b60006020828403121561057b57600080fd5b81356001600160a01b038116811461038157600080fd5b600080604083850312156105a557600080fd5b50508035926020909101359150565b6000815180845260005b818110156105da576020818501810151868301820152016105be565b506000602082860101526020601f19601f83011685010191505092915050565b84815283602082015260806040820152600061061960808301856105b4565b828103606084015261062b81856105b4565b97965050505050505056fea2646970667358221220823108a3a341d14f045fe1e4bcdfbc76d2aac3ba7bf549787e62867e6606e0de64736f6c63430008110033", + "nonce": "0x9e", "accessList": [] }, "additionalContracts": [], @@ -155,132 +212,180 @@ ], "receipts": [ { - "transactionHash": "0x9e62cacf9e36e9cf89049b8f8dd8eafc9add53d9bfaa7d279625a53caa1eac8d", - "transactionIndex": "0x1", - "blockHash": "0x85979eed53cbf9b4e7ba91038024cbc58e31e617376e7f0b201473d70ec6d137", - "blockNumber": "0x421df4", + "transactionHash": "0x03f421f721386b2c3e6156bb6e4bd3f9d9c7c2a854d955395c34a75971018e2a", + "transactionIndex": "0x3", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": null, - "cumulativeGasUsed": "0x22e2d1", + "cumulativeGasUsed": "0x1b95de", + "gasUsed": "0x116c59", + "contractAddress": "0x0538812C252058083Aa2b13d425f11610C404C25", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x8523e34459e7f2063545b739430e5aae7c90d33b3544e1656dfe3ef4545e241e", + "transactionIndex": "0x4", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0x3e26a3", "gasUsed": "0x2290c5", - "contractAddress": "0xf62a5C1be8425EA1a7D9542c2Ec996E2A71Ec3E3", + "contractAddress": "0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d0cc2a" + "effectiveGasPrice": "0xb4f5f5ca" }, { - "transactionHash": "0x487d19010753de947a3355fb8937b7e011b248377bee6829d2d7b8ec2211d065", - "transactionIndex": "0x3", - "blockHash": "0x85979eed53cbf9b4e7ba91038024cbc58e31e617376e7f0b201473d70ec6d137", - "blockNumber": "0x421df4", + "transactionHash": "0xad2628f9093eecae72c4c70466d82751f30caed30312ac3a5a910686ca2ab336", + "transactionIndex": "0x5", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": null, - "cumulativeGasUsed": "0x7037eb", + "cumulativeGasUsed": "0x89980f", "gasUsed": "0x4b716c", - "contractAddress": "0x299244282a8cB0216283913a4732cea1bdEcF392", + "contractAddress": "0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d0cc2a" + "effectiveGasPrice": "0xb4f5f5ca" }, { - "transactionHash": "0xc8110b2d0162d0111709696d746867fd15aa713a1ae26cbf2d75a410f5203b73", - "transactionIndex": "0x4", - "blockHash": "0x85979eed53cbf9b4e7ba91038024cbc58e31e617376e7f0b201473d70ec6d137", - "blockNumber": "0x421df4", + "transactionHash": "0x7281b30ceb6715e3fe8f504fa9c474767c361390969652fc08d6c6ebb479aae0", + "transactionIndex": "0x6", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": null, - "cumulativeGasUsed": "0x9b655f", + "cumulativeGasUsed": "0x915558", + "gasUsed": "0x7bd49", + "contractAddress": "0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0xeedafdb736d3eee4196d2b3b1f5f147c7f4af2b615a28b6a0864032db5aa4337", + "transactionIndex": "0x7", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0xbc82cc", "gasUsed": "0x2b2d74", - "contractAddress": "0x54251CB32FCbdF02379984c0f34129D8D77eB53C", + "contractAddress": "0x194A3fDc437b5398E4F334940aBBe278491D1378", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d0cc2a" + "effectiveGasPrice": "0xb4f5f5ca" }, { - "transactionHash": "0xedb202c5bd010e085c42cafb1522e98688b9202525f6f9380f22244c20f1e48e", - "transactionIndex": "0x5", - "blockHash": "0x85979eed53cbf9b4e7ba91038024cbc58e31e617376e7f0b201473d70ec6d137", - "blockNumber": "0x421df4", + "transactionHash": "0x2bfb4809138835d58f8dc033de004aab841dbfdbf32d0086123c2421d1c59778", + "transactionIndex": "0x8", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": null, - "cumulativeGasUsed": "0xbd6b35", - "gasUsed": "0x2205d6", - "contractAddress": "0x80238Be1cb78C0b701E1aD7D9815Ac91d9793049", + "cumulativeGasUsed": "0xbe4bb5", + "gasUsed": "0x1c8e9", + "contractAddress": "0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d0cc2a" + "effectiveGasPrice": "0xb4f5f5ca" }, { - "transactionHash": "0xf88229483fd7044cb145adf64a2b0d189152bb417637e2a0b9de33e3af90d44c", - "transactionIndex": "0x6", - "blockHash": "0x85979eed53cbf9b4e7ba91038024cbc58e31e617376e7f0b201473d70ec6d137", - "blockNumber": "0x421df4", + "transactionHash": "0x1abb1f61ba05344031110eb18ef39ece504e3f5a05745e8f26fdde9c0002ddce", + "transactionIndex": "0x9", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", + "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "to": null, + "cumulativeGasUsed": "0xe0c1b6", + "gasUsed": "0x227601", + "contractAddress": "0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0xb4f5f5ca" + }, + { + "transactionHash": "0x9ef1b894b371c25376cd287ea07a2b8a8926960479ab9375fac49805fbeb257c", + "transactionIndex": "0xa", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": null, - "cumulativeGasUsed": "0xe38584", + "cumulativeGasUsed": "0x106dc05", "gasUsed": "0x261a4f", - "contractAddress": "0x9BF85AB79B93d2ba1321BeB40E2803FC9a819108", + "contractAddress": "0x217C1d6D6a72925918a644d67dcb0c3760b81E08", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d0cc2a" + "effectiveGasPrice": "0xb4f5f5ca" }, { - "transactionHash": "0x9eefe8e8c3ee7d3eb5a0aa2a460ead87fd3978a063f37d9aedb08322a9c62851", - "transactionIndex": "0x7", - "blockHash": "0x85979eed53cbf9b4e7ba91038024cbc58e31e617376e7f0b201473d70ec6d137", - "blockNumber": "0x421df4", + "transactionHash": "0x487aeb6492fe4f6c415fb18cdbacba7835a188c3558d0c6a341e096c54909006", + "transactionIndex": "0xb", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": null, - "cumulativeGasUsed": "0xfdda67", + "cumulativeGasUsed": "0x12130e8", "gasUsed": "0x1a54e3", - "contractAddress": "0xBF7eb23801d1edE9fd2F3e8BfB5C0a5370A9F103", + "contractAddress": "0x6254eFd84cE152306448E2d10c4dF7DCE6C99765", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d0cc2a" + "effectiveGasPrice": "0xb4f5f5ca" }, { - "transactionHash": "0xcec94caaef976617c76a15e425308c2b3f9a35c834cab219f1dceff062df9e45", - "transactionIndex": "0x8", - "blockHash": "0x85979eed53cbf9b4e7ba91038024cbc58e31e617376e7f0b201473d70ec6d137", - "blockNumber": "0x421df4", + "transactionHash": "0xddff632ab38e431289502ce39590e6d81b930bb582131505717b5e36f76a2922", + "transactionIndex": "0xc", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": null, - "cumulativeGasUsed": "0x11340c3", + "cumulativeGasUsed": "0x1369744", "gasUsed": "0x15665c", - "contractAddress": "0x50b4b25FD93ec0EF55a369247b90684E69D5E95D", + "contractAddress": "0x8fe69c524112F080A15d409f7c68B56248541266", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d0cc2a" + "effectiveGasPrice": "0xb4f5f5ca" }, { - "transactionHash": "0x877c944c179070efdd86d6c363c01b10bb96dcb580606c2c5c586d9febee1df6", - "transactionIndex": "0x9", - "blockHash": "0x85979eed53cbf9b4e7ba91038024cbc58e31e617376e7f0b201473d70ec6d137", - "blockNumber": "0x421df4", + "transactionHash": "0x97cee138978692be5f50fe8874350c8aba974b0e2695c57141895d9ee0a8f811", + "transactionIndex": "0xd", + "blockHash": "0xb8d59c7ba9328368142196678ea272417c729cbb87efeb02c3c641283f1f8f85", + "blockNumber": "0x44633c", "from": "0x931c3aC09202650148Edb2316e97815f904CF4fa", "to": null, - "cumulativeGasUsed": "0x1197ba1", - "gasUsed": "0x63ade", - "contractAddress": "0xA6Bdec732f857522338A29d0Dd508ABe33Eb3B8F", + "cumulativeGasUsed": "0x13cd22e", + "gasUsed": "0x63aea", + "contractAddress": "0x65C37f11879ab9aBAB518457e665C45AaF074DB7", "logs": [], "status": "0x1", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "effectiveGasPrice": "0xb2d0cc2a" + "effectiveGasPrice": "0xb4f5f5ca" } ], "libraries": [], @@ -290,21 +395,21 @@ "internal_type": "address", "value": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B" }, + "cut": { + "internal_type": "struct IDiamondCut.FacetCut[]", + "value": "[(0x0538812C252058083Aa2b13d425f11610C404C25, 1, [0x5e1ac8fa, 0x1219dee2, 0xaf76f046, 0x47c07483, 0xd774b4e3, 0xc8422402, 0x7273e796, 0xc1b2bc96, 0x6362aeb4, 0xff3406ce]), (0x0538812C252058083Aa2b13d425f11610C404C25, 0, [0x373df694]), (0xfB745DE4Fe187b5Ab18f0e5afB00ca38bC561c71, 1, [0xce498e84, 0xcb429501, 0xe9f0273c, 0xbdd2620a, 0xeb75c8e8, 0xe6a19df2, 0xa62caf82, 0xa0069289, 0xa246e7a8, 0x34531828, 0xf1ebc810, 0xebc526dc, 0x5c74d6a4, 0x7bf96b68, 0x7f09d085]), (0x052cAef4AAc9319bb868E2a7F532EdD6a6fbd788, 1, [0x04e2e500, 0x78e890ba, 0xf17d17f4, 0xedd2133b, 0xa1a2e295, 0x4980f288, 0x10b4955d, 0xa2e4569b, 0x73abdfa5, 0x60f58edf]), (0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A, 1, [0x337781ea, 0x1d510217, 0x22f153db, 0x371d6244]), (0x76737dBD74cFB3e6d260E800b156dA6efBE89e9A, 0, [0xe13b9b14, 0x10a2bbed]), (0x194A3fDc437b5398E4F334940aBBe278491D1378, 1, [0x012ee17b, 0xef706adf, 0x9df00480, 0x4c8198dc, 0x59e148fc, 0x810a374d, 0x4579268a, 0x8d81a1d3]), (0xAbb567184419eC38Dc3631C765dBaE503b51e1Ca, 1, [0x70a08231, 0x18160ddd]), (0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030, 1, [0x1add96f6, 0x23eaabe3, 0x00bae173, 0xf3253b5f, 0xc3ab48cb, 0xe8b3fb3c, 0x7d292605]), (0xE33cb0263Cd518E689a6b2c838cc1CA9FcD56030, 0, [0x0a27162a]), (0x217C1d6D6a72925918a644d67dcb0c3760b81E08, 1, [0x53733f97, 0xcf0ccf9e, 0x524d8dd5, 0xcfb51928, 0x7dfcdf2a]), (0x6254eFd84cE152306448E2d10c4dF7DCE6C99765, 1, [0x7baa1dde, 0xd588b132, 0x5c923301, 0xc9787589, 0xe208f10a, 0xec7a3770, 0xa6cd857d, 0xaa47d5cb, 0xad747f2f, 0x33f6dfd8, 0x1ed7db65]), (0x8fe69c524112F080A15d409f7c68B56248541266, 1, [0x9bda8678, 0x13b74760]), (0x65C37f11879ab9aBAB518457e665C45AaF074DB7, 1, [0x3f1b887f, 0x53b66f36, 0x9cb481b2, 0xafab5f15])]" + }, "initDiamondAddress": { "internal_type": "address", "value": "0x0000000000000000000000000000000000000000" }, - "cut": { - "internal_type": "struct IDiamondCut.FacetCut[]", - "value": "[(0xf62a5C1be8425EA1a7D9542c2Ec996E2A71Ec3E3, 1, [0xce498e84, 0xcb429501, 0xe9f0273c, 0xbdd2620a, 0xeb75c8e8, 0xe6a19df2, 0xa62caf82, 0xa0069289, 0xa246e7a8, 0x34531828, 0xf1ebc810, 0xebc526dc, 0x5c74d6a4, 0x7bf96b68, 0x7f09d085]), (0x299244282a8cB0216283913a4732cea1bdEcF392, 1, [0x04e2e500, 0x78e890ba, 0xf17d17f4, 0xedd2133b, 0xa1a2e295, 0x4980f288, 0x10b4955d, 0xa2e4569b, 0x73abdfa5, 0x60f58edf]), (0x54251CB32FCbdF02379984c0f34129D8D77eB53C, 1, [0x012ee17b, 0xef706adf, 0x9df00480, 0x4c8198dc, 0x59e148fc, 0x810a374d, 0x4579268a, 0x8d81a1d3]), (0x80238Be1cb78C0b701E1aD7D9815Ac91d9793049, 1, [0x1add96f6, 0x23eaabe3, 0x00bae173, 0xf3253b5f, 0xc3ab48cb, 0xe8b3fb3c, 0x7d292605]), (0x9BF85AB79B93d2ba1321BeB40E2803FC9a819108, 1, [0x53733f97, 0xcf0ccf9e, 0x524d8dd5, 0xcfb51928, 0x7dfcdf2a]), (0xBF7eb23801d1edE9fd2F3e8BfB5C0a5370A9F103, 1, [0x7baa1dde, 0xd588b132, 0x5c923301, 0xc9787589, 0xe208f10a, 0xa6cd857d, 0xaa47d5cb, 0xad747f2f, 0x33f6dfd8, 0x1ed7db65]), (0xBF7eb23801d1edE9fd2F3e8BfB5C0a5370A9F103, 0, [0xec7a3770]), (0x0000000000000000000000000000000000000000, 2, [0xbf9f7311]), (0x50b4b25FD93ec0EF55a369247b90684E69D5E95D, 1, [0x9bda8678, 0x13b74760]), (0xA6Bdec732f857522338A29d0Dd508ABe33Eb3B8F, 1, [0x3f1b887f, 0x53b66f36, 0x9cb481b2, 0xafab5f15])]" - }, "upgradeHash": { "internal_type": "bytes32", - "value": "0x228ed4013d85527e0540160659ea7ba0e399220ab6360704e987713da9c7b1ed" + "value": "0x5d103685f9b53bde7eb076db198095de4f7123b88fe40b70e261d53d3baf6170" } }, - "timestamp": 1695291539, + "timestamp": 1697191022, "chain": 11155111, "multi": false, - "commit": "03006b4" + "commit": "13da7ed8" } \ No newline at end of file diff --git a/cli-tools/anvil_bootstrap.sh b/cli-tools/anvil_bootstrap.sh index f1a61f58..da41e0f3 100755 --- a/cli-tools/anvil_bootstrap.sh +++ b/cli-tools/anvil_bootstrap.sh @@ -3,29 +3,22 @@ GREEN=$'\e[0;32m' NC=$'\e[0m' -DIAMOND=$(jq -r '."31337"' deployedAddresses.json) -GTOKEN=0xfc12A71BF96d541F439C79E3F16654e1c9B97935 +GTOKEN=0x909677ebf6e09b669dbe01950e9f3ffce7602097 ACC1=0x2dF0a6dB2F0eF1269bE777C856A7665eeC00649f ACC2=0x4C9f9947491c72C668efAA09e033ffe03C976456 ACC3=0x2328d0d782B9939a982997F2C3F35C2E0f069D86 ACC4=0x9ADCcEb795F3DBffd66B0b2792225269794C2603 -echo " 💎 [ ${GREEN}Deploying diamond${NC} ]" -make anvil-deploy-diamond || exit 1 +echo " 💎 [ ${GREEN}Deploying the diamond${NC} ]" +yarn build && yarn deploy local --fresh || exit 1 -echo " 🎯 [ ${GREEN}Initializing upgrade hash${NC} ]" -UPGRADE_HASH=$(make anvil-upgrade-init-sim | tee /dev/stderr | grep 'upgradeHash: bytes32' | head -n 1 | awk '{print $3}') - -echo " ⚓️ [ ${GREEN}Scheduling the upgrade${NC} ]" -make anvil-schedule upgradeHash=$UPGRADE_HASH || exit 2 - -echo " 🏄‍♂️ [ ${GREEN}Upgrade init${NC} ]" -make anvil-upgrade-init || exit 4 +DIAMOND=$(jq '.local.contracts[] | select(.name == "DiamondProxy").onChain.address' gemforge.deployments.json) +echo " 💎 Diamond address: $DIAMOND" echo " 🦋 [ ${GREEN}Deploying GTOKEN${NC} ]" make anvil-gtoken || exit 5 -echo " 🐳 [ ${GREEN}Support GTOKEN${NC} ]" +echo " 🐳 [ ${GREEN}Support GTOKEN${NC}: $GTOKEN ]" make anvil-add-supported-external-token \ naymsDiamondAddress=$DIAMOND \ externalToken=$GTOKEN || exit 6 diff --git a/cli-tools/anvil_upgrade.sh b/cli-tools/anvil_upgrade.sh deleted file mode 100755 index c42bb9e3..00000000 --- a/cli-tools/anvil_upgrade.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -GREEN=$'\e[0;32m' -NC=$'\e[0m' - -DIAMOND=$(jq -r '."31337"' deployedAddresses.json) - - -echo " 🚢 [ ${GREEN}Deploying upgrades${NC} ]" -UPGRADE_HASH=$(make anvil-upgrade | tee /dev/stderr | grep 'upgradeHash: bytes32' | head -n 1 | awk '{print $3}') - -echo " ⚓️ [ ${GREEN}Schedule upgrades${NC} ]" -make anvil-schedule upgradeHash=$UPGRADE_HASH || exit 1 - -echo " 🏄‍♂️ [ ${GREEN}Prepare upgrades${NC} ]" -make prep-upgrade broadcastJson=broadcast/SmartDeploy.s.sol/31337/smartDeploy-latest.json - -echo " 💎 [ ${GREEN}Cut the upgrades in${NC} ]" -make anvil-diamond-cut \ No newline at end of file diff --git a/cli-tools/deployer.js b/cli-tools/deployer.js deleted file mode 100755 index 74cdd70e..00000000 --- a/cli-tools/deployer.js +++ /dev/null @@ -1,245 +0,0 @@ -#!/usr/bin/env node - -const { Wallet } = require("ethers"); -const fs = require("fs"); -const chalk = require("chalk"); -const dotenv = require("dotenv"); - -dotenv.config(); - -if (process.argv.length < 4) { - console.error(chalk.red(`Must provide deployment action and target network!`)); - console.log(`Allowed actions are: ${chalk.green("deploy")} and ${chalk.green("upgrade")}`); - process.exit(1); -} - -const [action, networkId, ...otherArgs] = process.argv.slice(2); - -const flags = new Set(["--fork", "--dry-run"]); -if (!otherArgs.every((a) => flags.has(a))) { - console.log(`Allowed flags are only: ${chalk.green("--fork")} and ${chalk.green("--dry-run")}`); - process.exit(1); -} - -const fork = otherArgs.includes("--fork"); -const dryRun = otherArgs.includes("--dry-run"); - -const rpcUrl = fork ? "http://localhost:8545" : process.env[`ETH_${networkId}_RPC_URL`]; -const mnemonicFile = networkId === "1" && !fork ? "nayms_mnemonic_mainnet.txt" : "nayms_mnemonic.txt"; -const mnemonicIndex = networkId === "1" && !fork ? 0 : 19; - -const mnemonic = fs.readFileSync(mnemonicFile).toString(); -const ownerAddress = Wallet.fromMnemonic(mnemonic, `m/44'/60'/0'/0/19`).address; // acc20 -const systemAdminAddress = networkId === "1" - ? "0xE6aD24478bf7E1C0db07f7063A4019C83b1e5929" // mainnet sysAdminB - : Wallet.fromMnemonic(mnemonic, `m/44'/60'/0'/0/0`).address; // acc1 - -if (action === "deploy") { - console.log(`[ ${chalk.green(networkId + (fork ? "-fork" : ""))} ] Deploying new diamond`); - - console.log(`\n[ ${chalk.green("Deploying contracts")} ]\n`); - const deployNewDiamondCmd = deployDiamond(rpcUrl, networkId, fork, ownerAddress, systemAdminAddress, mnemonicFile, mnemonicIndex); - execute(deployNewDiamondCmd); - - console.log(`\n[ ${chalk.green("Initializing upgrade")} ]\n`); - const initSimCmd = upgrade(rpcUrl, networkId, fork, ownerAddress, systemAdminAddress, mnemonicFile, mnemonicIndex, false); - const result = execute(initSimCmd); - const upgradeHash = getUpgradeHash(result); - - console.log(`\n[ ${chalk.green("Scheduling upgrade")} ]\n`); - const scheduleCommand = scheduleUpgrade({ - rpcUrl, - networkId, - upgradeHash, - systemAdminAddress, - mnemonicFile: mnemonicFile, - mnemonicIndex: mnemonicIndex, - }); - execute(scheduleCommand); - - console.log(`\n[ ${chalk.green("Doing upgrade")} ]\n`); - const upgradeCmd = upgrade(rpcUrl, networkId, fork, ownerAddress, systemAdminAddress, mnemonicFile, mnemonicIndex); - execute(upgradeCmd); -} else if (action === "upgrade") { - const addressesRaw = fs.readFileSync("deployedAddresses.json"); - const addresses = JSON.parse(addressesRaw); - - console.log(`[ ${chalk.green(networkId + (fork ? "-fork" : ""))} ] upgrade => ${chalk.greenBright(addresses[networkId])}\n`); - - if (networkId === "1" && fork) { - // transfer ownership to non-mainnet account - execute(`cast rpc anvil_impersonateAccount ${systemAdminAddress}`); - execute(`cast send ${addresses[networkId]} "transferOwnership(address)" \\ - ${ownerAddress} \\ - -r http:\\127.0.0.1:8545 \\ - --unlocked \\ - --from ${systemAdminAddress}`); - execute(`cast rpc anvil_setBalance ${ownerAddress} 10000000000000000000 -r http:\\127.0.0.1:8545`); - } - - console.log(`\n[ ${chalk.green("Deploying contracts")} ]\n`); - const upgradeCmd = upgrade(rpcUrl, networkId, fork, ownerAddress, systemAdminAddress, mnemonicFile, mnemonicIndex, false); - const result = execute(upgradeCmd); - const upgradeHash = getUpgradeHash(result); - - if (networkId === "1" && !fork) { - console.log(`Please get the following upgrade hash approved: ${chalk.green(upgradeHash)}`); - } else { - console.log(`\n[ ${chalk.green("Scheduling upgrade")} ]\n`); - const scheduleCommand = scheduleUpgrade({ - rpcUrl, - networkId, - upgradeHash, - systemAdminAddress, - mnemonicFile: mnemonicFile, - mnemonicIndex, - fork, - diamondAddress: addresses[networkId], - }); - execute(scheduleCommand); - } - - console.log(`\n[ ${chalk.green("Preparing upgrade")} ]\n`); - const prepCmd = `node ./cli-tools/prep-upgrade.js broadcast/SmartDeploy.s.sol/${networkId}/smartDeploy-latest.json`; - execute(prepCmd); - - console.log(`\n[ ${chalk.green("Diamond cut")} ]\n`); - const diamondCutCmd = diamondCut({ - rpcUrl, - networkId, - upgradeHash, - ownerAddress, - mnemonicFile: mnemonicFile, - mnemonicIndex: networkId === "1" && !fork ? 0 : 19, - }); - if (networkId === "1" && !fork) { - console.log("Execute the following command to cut in the facets, once the upgrade hash is approved"); - console.log(chalk.blue(diamondCutCmd)); - } else { - execute(diamondCutCmd); - } -} else { - console.log(chalk.red("Supported actions are: 'deploy' and 'upgrade'!")); - process.exit(1); -} - -function getUpgradeHash(result) { - if (!result) { - return "not found"; - } - const hashLine = result - .split("\n") - .find((line) => line.includes("upgradeHash: bytes32")) - .trim() - .split(" "); - return hashLine[hashLine.length - 1]; -} - -function deployDiamond(rpcUrl, networkId, fork, owner, sysAdmin, mnemonicFile, mnemonicIndex, facetsToCutIn = '"[]"', salt = `0xdeffffffff`) { - return smartDeploy({ - rpcUrl, - networkId, - newDeploy: true, - fork, - owner, - sysAdmin, - initDiamond: false, - facetAction: 2, - facetsToCutIn, - salt, - sender: owner, - mnemonicFile, - mnemonicIndex, - broadcast: true, - }); -} - -function upgrade(rpcUrl, networkId, fork, owner, sysAdmin, mnemonicFile, mnemonicIndex, initDiamond = true, broadcast = true, facetsToCutIn = '"[]"', salt = `0xdeffffffff`) { - return smartDeploy({ - rpcUrl, - networkId, - newDeploy: false, - fork, - owner, - sysAdmin, - initDiamond, - facetAction: 1, - facetsToCutIn, - salt, - sender: owner, - mnemonicFile, - mnemonicIndex, - broadcast, - }); -} - -function smartDeploy(config) { - let command = `forge script SmartDeploy \\ - -s "smartDeploy(bool, address, address, bool, uint8, string[] memory, bytes32)" ${config.newDeploy} ${config.owner} ${config.sysAdmin} ${config.initDiamond} ${config.facetAction} ${config.facetsToCutIn} ${config.salt} \\ - -f ${config.rpcUrl} \\ - --chain-id ${config.networkId}`; - - if (config.broadcast) { - command += ` \\ - --sender ${config.sender} \\ - --mnemonic-paths ${config.mnemonicFile} \\ - --mnemonic-indexes ${config.mnemonicIndex}`; - } - - command += ` \\ - -vv \\ - --ffi`; - - if (config.broadcast) { - command += ` \\ - --broadcast`; - } - if(!config.fork) { - command += ` \\ - --verify --delay 30 --retries 10` - } - - return command; -} - -function scheduleUpgrade(config) { - const isFork = config.networkId === "1" && config.fork; - const impersonateIfNeeded = isFork ? `cast rpc anvil_impersonateAccount ${config.systemAdminAddress} && ` : ""; - const mnemonicIfNeeded = isFork - ? "" - : ` \\ - --chain-id ${config.networkId} \\ - --mnemonic ${config.mnemonicFile} \\ - --mnemonic-index ${config.mnemonicIndex} - `; - - return `${impersonateIfNeeded} cast send ${config.diamondAddress} "createUpgrade(bytes32)" \\ - ${config.upgradeHash} \\ - --rpc-url ${config.rpcUrl} ${isFork ? "--unlocked" : ""} \\ - --from ${config.systemAdminAddress} ${mnemonicIfNeeded}`; -} - -function diamondCut(config) { - return `forge script S03UpgradeDiamond \\ - -s "run(address)" ${config.ownerAddress} \\ - -f ${config.rpcUrl} \\ - --chain-id ${config.networkId} \\ - --sender ${config.ownerAddress} \\ - --mnemonic-paths ${config.mnemonicFile} \\ - --mnemonic-indexes ${config.mnemonicIndex} \\ - -vv \\ - --ffi \\ - --broadcast`; -} - -function execute(cmd) { - console.log(cmd); - - if (!dryRun) { - const { execSync } = require("child_process"); - - const result = execSync(cmd).toString(); - console.log("\n\n ------------------ \n\n", result); - return result; - } -} diff --git a/cli-tools/filter-lcov.js b/cli-tools/filter-lcov.js index 0cf04fbc..35e839ee 100755 --- a/cli-tools/filter-lcov.js +++ b/cli-tools/filter-lcov.js @@ -13,9 +13,9 @@ const exclude = [ 'script/.*', 'test/.*', 'src/utils/.*', - 'src/diamonds/nayms/AppStorage', - 'src/diamonds/shared/libs/.*', - 'src/diamonds/shared/interfaces/.*', + 'src/shared/AppStorage', + 'src/generated/.*', + 'src/init/.*', ] let record = false diff --git a/cli-tools/prep-build.js b/cli-tools/prep-build.js deleted file mode 100755 index 7552cb28..00000000 --- a/cli-tools/prep-build.js +++ /dev/null @@ -1,175 +0,0 @@ -#!/usr/bin/env node -const path = require("path"); -const fs = require("fs"); -const glob = require("glob"); -const chalk = require("chalk"); - -const PROJECT_DIR = path.join(__dirname, ".."); -const FACETS_SRC_DIR = path.join( - PROJECT_DIR, - "src", - "diamonds", - "nayms", - "facets" -); -const INTERFACES_SRC_DIR = path.join( - PROJECT_DIR, - "src", - "diamonds", - "nayms", - "interfaces" -); -const FACETS_DEPLOYED_TXT = path.join(PROJECT_DIR, "facetsdeployed.txt"); -const GENERATED_DEPLOY_NAMES_SOL = path.join( - PROJECT_DIR, - "script", - "utils", - "LibGeneratedNaymsFacetHelpers.sol" -); - -function filterFacetsToExclude(excludeList) { - const allFacets = glob - .sync("*Facet.sol", { cwd: FACETS_SRC_DIR }) - .map((a) => path.basename(a).substring(0, a.indexOf("Facet"))); - return allFacets.filter((facet) => !excludeList.includes(facet)); -} - -// Parse command line arguments -const args = process.argv.slice(2); -const excludedFacets = args.map((arg) => arg.trim()); - -// load facets -const facetNames = filterFacetsToExclude(excludedFacets); - -// load interfaces and methods -const facetData = {}; -const REGEX = /^\s+function ([A-Za-z0-9_]+)\(/gim; -facetNames.forEach((f) => { - try { - const interfaceName = `I${f}Facet`; - const src = fs - .readFileSync(path.join(INTERFACES_SRC_DIR, `${interfaceName}.sol`)) - .toString("utf-8"); - const methods = []; - let m; - while ((m = REGEX.exec(src))) { - methods.push(m[1]); - } - if (!methods.length) { - throw new Error(`Empty interface`); - } - facetData[f] = { - interfaceName, - methods, - }; - } catch (err) { - console.error(chalk.red(`Error loading interface for facet ${f}`)); - throw err; - } -}); - -console.log(chalk.blue("== Facets ==")); -Object.entries(facetData).forEach(([facetName, data]) => { - console.log(`${facetName} - ${data.methods.length} methods`); -}); -fs.writeFileSync(FACETS_DEPLOYED_TXT, facetNames.join("\n"), { - encoding: "utf-8", -}); - -// write metadata solidity file -fs.writeFileSync( - GENERATED_DEPLOY_NAMES_SOL, - ` -// SPDX-License-Identifier: MIT -pragma solidity >=0.8.13 <0.9; - -/// ------------------------------------------------------------------------------------------------------------ -/// -/// NOTE: this file is auto-generated by ${path.basename( - __filename - )}, please DO NOT modify it directly. -/// -/// ------------------------------------------------------------------------------------------------------------ - -import "src/diamonds/nayms/INayms.sol"; -import { Nayms } from "src/diamonds/nayms/Nayms.sol"; -import { InitDiamond } from "src/diamonds/nayms/InitDiamond.sol"; - -${facetNames - .map( - (n, i) => - `import { ${n}Facet } from "src/diamonds/nayms/facets/${n}Facet.sol";` - ) - .join("\n")} - -enum NaymsFacetAddressIndex { - ${facetNames.join(",\n ")} -} - -library LibGeneratedNaymsFacetHelpers { - function getFacetNames() internal pure returns (string[] memory facetNames) { - facetNames = new string[](${facetNames.length}); - ${facetNames.map((n, i) => `facetNames[${i}] = "${n}";`).join("\n ")} - } - - function createNaymsDiamondFunctionsCut(address[] memory facetAddresses) internal pure returns (IDiamondCut.FacetCut[] memory cut) { - // initialize the diamond as well as cut in all facets - cut = new IDiamondCut.FacetCut[](${facetNames.length}); - - // yul too slow, so fix stack too deep here - { - ${facetNames - .map((n, i) => { - const { interfaceName, methods } = facetData[n]; - - const selectors = methods.map( - (m, mi) => `f${i}[${mi}] = ${interfaceName}.${m}.selector;` - ); - - const str1 = `bytes4[] memory f${i} = new bytes4[](${methods.length}); - ${selectors.join("\n ")}`; - - const str2 = `cut[${i}] = IDiamondCut.FacetCut({ - facetAddress: address(facetAddresses[uint256(NaymsFacetAddressIndex.${n})]), - action: IDiamondCut.FacetCutAction.Add, - functionSelectors: f${i} - });`; - - return `${str1}\n ${str2}`; - }) - .join("\n ")} - } - } - - function deployNaymsFacets() internal returns (address[] memory facetAddresses) { - facetAddresses = new address[](${facetNames.length}); - ${facetNames - .map( - (n) => - `facetAddresses[uint256(NaymsFacetAddressIndex.${n})] = address(new ${n}Facet());` - ) - .join("\n ")} - } - - function deployNaymsFacets(NaymsFacetAddressIndex index) internal returns (address facetAddress) { - ${facetNames - .map( - (n) => - `if (index == NaymsFacetAddressIndex.${n}) { return address(new ${n}Facet()); }` - ) - .join("\n ")} - } - - function deployNaymsFacetsByName(string memory name) internal returns (address facetAddress) { - if (keccak256(abi.encodePacked(name)) == keccak256(abi.encodePacked("InitDiamond"))) { return address(new InitDiamond()); } - ${facetNames - .map( - (n) => - `if (keccak256(abi.encodePacked(name)) == keccak256(abi.encodePacked("${n}"))) { return address(new ${n}Facet()); }` - ) - .join("\n ")} - } -} -`, - { encoding: "utf-8" } -); diff --git a/cli-tools/prep-subgraph-abi.js b/cli-tools/prep-subgraph-abi.js deleted file mode 100755 index 7f68714c..00000000 --- a/cli-tools/prep-subgraph-abi.js +++ /dev/null @@ -1,24 +0,0 @@ -const fs = require('fs') - -const artifactsPath = './forge-artifacts' -const sourcePaths = [ - './src/diamonds/nayms/interfaces', - './src/diamonds/nayms/libs' -] - -let abi = [] - -const inlineABIs = (sourcePath) => { - let files = fs.readdirSync(sourcePath) - for (const file of files) { - const jsonFile = file.replace('sol', 'json') - let json = fs.readFileSync(`${artifactsPath}/${file}/${jsonFile}`) - json = JSON.parse(json) - abi.push(...json.abi) - } -} - -sourcePaths.forEach(p => inlineABIs(p)) - -fs.writeFileSync('./NaymsDiamond.json', JSON.stringify(abi)) -console.log('ABI written to ./NaymsDiamond.json') diff --git a/cli-tools/prep-upgrade.js b/cli-tools/prep-upgrade.js deleted file mode 100644 index 02adad52..00000000 --- a/cli-tools/prep-upgrade.js +++ /dev/null @@ -1,122 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const ethers = require("ethers"); -// Define the FacetCutAction enum -const facetCutActionEnum = { - 0: "Add", - 1: "Replace", - 2: "Remove", -}; - -const filePath = process.argv[2]; // get the file path from CLI argument - -const generateS03UpgradeDiamond = (facetCuts, updateStateAddress) => { - let script = `// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/// ------------------------------------------------------------------------------------------------------------ -/// -/// NOTE: this file is auto-generated by ${path.basename(__filename)}, please DO NOT modify it directly. Unless you want to :) -/// -/// ------------------------------------------------------------------------------------------------------------ - -import { IDiamondCut } from "src/diamonds/nayms/INayms.sol"; -import "script/utils/DeploymentHelpers.sol"; - -contract S03UpgradeDiamond is DeploymentHelpers { - using stdJson for string; - - function run(address _ownerAddress) external { - INayms nayms = INayms(getDiamondAddressFromFile()); - - if (_ownerAddress == address(0)) { - _ownerAddress = nayms.owner(); - } - - string memory path = "${filePath}"; - string memory json = vm.readFile(path); - bytes memory rawTxReturn = json.parseRaw(".returns.cut"); - TxReturn memory txReturn = abi.decode(rawTxReturn, (TxReturn)); - assertEq(txReturn.internalType, "struct IDiamondCut.FacetCut[]", "not the correct cut struct type"); - - IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](${facetCuts.length}); -`; - - // add the facetCuts data to the script - facetCuts.forEach((facetCut, i) => { - if (i === 0) { - script += ` bytes4[] memory f = new bytes4[](${facetCut.functionSelectors.length});\n`; - } else { - script += ` f = new bytes4[](${facetCut.functionSelectors.length});\n`; - } - - facetCut.functionSelectors.forEach((selector, j) => { - script += ` f[${j}] = ${selector};\n`; - }); - - script += ` cut[${i}] = IDiamondCut.FacetCut({ facetAddress: ${facetCut.facetAddress}, action: IDiamondCut.FacetCutAction.${facetCut.action}, functionSelectors: f }); - `; - }); - - script += ` - vm.startBroadcast(_ownerAddress);`; - - if (updateStateAddress) { - script += ` - nayms.diamondCut(cut, address(${updateStateAddress}), abi.encodeWithSignature("initialize()"));\n`; - } else { - script += ` - nayms.diamondCut(cut, address(0), new bytes(0));\n`; - } - - script += ` vm.stopBroadcast(); - } -} -`; - return script; -}; - -// The following parses the IDiamondCut.FacetCut[] struct from the JSON file. See test/mocks/data/facet-cut-struct-{i}.json for examples of this data structure. -fs.readFile(filePath, "utf8", (err, data) => { - if (err) { - console.error(`Error reading file from disk: ${err}`); - } else { - // parse the JSON file to a JavaScript object - const json = JSON.parse(data); - let valueStr = json.returns.cut.value.slice(1, -1); // Remove the outer brackets - let tuplesStr = valueStr.split("), "); - - let facetCuts = tuplesStr.map((tupleStr) => { - let tupleParts = tupleStr.split(", ["); - - // Handle facetAddress and action - let facetActionParts = tupleParts[0].split(", "); - let facetAddress = ethers.utils.getAddress(facetActionParts[0].slice(1)); // Remove leading "(" - let action = facetCutActionEnum[parseInt(facetActionParts[1])]; - - // Handle functionSelectors - let functionSelectorsStr = tupleParts[1].slice(0, -1); // Remove trailing "]" - if (functionSelectorsStr.charAt(functionSelectorsStr.length - 1) === ")") { - functionSelectorsStr = functionSelectorsStr.slice(0, -1); // Remove trailing ")" - } - - let functionSelectors = functionSelectorsStr.split(", "); - // Remove any trailing "]" from the last functionSelector - let lastFunctionSelector = functionSelectors[functionSelectors.length - 1]; - if (lastFunctionSelector.endsWith("]")) { - functionSelectors[functionSelectors.length - 1] = lastFunctionSelector.slice(0, -1); - } - return { facetAddress, action, functionSelectors }; - }); - - const updateStateAddress = process.argv[3]; - // Write the script to the S03UpgradeDiamond.s.sol file - fs.writeFile(path.join(__dirname, "../script/deployment/S03UpgradeDiamond.s.sol"), generateS03UpgradeDiamond(facetCuts, updateStateAddress), (err) => { - if (err) { - console.error(`Error writing file to disk: ${err}`); - } else { - console.log(`Successfully wrote script to S03UpgradeDiamond.s.sol`); - } - }); - } -}); diff --git a/deployedAddresses.json b/deployedAddresses.json deleted file mode 100644 index 4939f347..00000000 --- a/deployedAddresses.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "1": "0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5", - "11155111": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", - "31337": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", - "5": "0x428c9347a76943E4c625C11813A303Ca12B8675f" -} \ No newline at end of file diff --git a/docs/adr/adr-template.md b/docs/adr/adr-template.md index 9d1ea96a..1c06d336 100644 --- a/docs/adr/adr-template.md +++ b/docs/adr/adr-template.md @@ -10,7 +10,7 @@ ## Alternative Approaches -> This section contains information around alternative options that are considered before making a decision. It should contain a explanation on why the alternative approach(es) were not chosen. +> This section contains information around alternative options that are considered before making a decision. It should contain an explanation of why the alternative approach(es) were not chosen. ## Decision @@ -67,4 +67,4 @@ > Are there any relevant PR comments, issues that led up to this, or articles referenced for why we made the given design choice? If so link them here! -- {reference link} \ No newline at end of file +- {reference link} diff --git a/docs/coin.md b/docs/coin.md index cd68a9fa..647dfc24 100644 --- a/docs/coin.md +++ b/docs/coin.md @@ -8,7 +8,7 @@ The Token is powered by platform commissions (fees): - the Surplus Sub Fund (SSF) Fees that are allocated to the token mechanism are divided between the STM and the NDF. -The STM allows external owners of NAYM to stake their assets in exchange for the portion of the Fees that the STM resceives, payed as a dividend. +The STM allows external owners of NAYM to stake their assets in exchange for the portion of the Fees that the STM receives, paid as a dividend. The NAYM coin is an ERC20 contract to enable use outside the ecosystem. It is implemented as a facet of the application. diff --git a/docs/deployer.md b/docs/deployer.md index 01bb2d2d..68937d84 100644 --- a/docs/deployer.md +++ b/docs/deployer.md @@ -1,8 +1,8 @@ ## Nayms Deployer -This documents describe how to use the `deployer` script to make use of the `SmartDeploy` more easily. +This document describes how to use the `deployer` script to make use of the `SmartDeploy` more easily. -Basicaly what `deployer` does is, it automates the interaction with the `SmartDeploy` script for some of the most common use cases. +Basically what `deployer` does is, it automates the interaction with the `SmartDeploy` script for some of the most common use cases. ### Basics @@ -46,9 +46,9 @@ Leave this shell active, and in another shell window run: cli-tools/deployer.js upgrade 1 --fork --dry-run ``` -This will give you a preview of the commands that it would actually execute, should you ommit the `--dry-run` flag. Bare in mind for this to work you will need to have `$ETH_1_RPC_URL` environment variable defined. +This will give you a preview of the commands that it would actually execute, should you omit the `--dry-run` flag. Bear in mind for this to work you will need to have `$ETH_1_RPC_URL` environment variable defined. -There is also a `anvil-fork-sepolia` makefile target available for convenience. +There is also an `anvil-fork-sepolia` makefile target available for convenience. #### Sepolia upgrade @@ -62,7 +62,7 @@ For this to work you will need to have `$ETH_11155111_RPC_URL` environment varia #### Full deploy on local node -You want a fresh new deployment of the diamond on you local node. Asumption is we use foundry anvil. +You want a fresh new deployment of the diamond on your local node. Assumption is we use foundry anvil. ```zsh cli-tools/deployer.js deploy 31337 diff --git a/docs/index.md b/docs/index.md index a71f16d2..54e42d28 100644 --- a/docs/index.md +++ b/docs/index.md @@ -35,7 +35,7 @@ In brief: ### External ERC20 tokens as internal objects -When an ERC20 token is transferred into Nayms, an internal token amount equal to the amount transfered is minted, the ID of which is derived from the address. The internal ledger then keeps track of ownership as long as the currency is in deposit. When the ERC20 is withdrawn from Nayms, the amount is burned and transferred out ouf the contract. All balances and transfers are then done on the internal ledger. +When an ERC20 token is transferred into Nayms, an internal token amount equal to the amount transferred is minted, the ID of which is derived from the address. The internal ledger then keeps track of ownership as long as the currency is in deposit. When the ERC20 is withdrawn from Nayms, the amount is burned and transferred out ouf the contract. All balances and transfers are then done on the internal ledger. ## Access Control List (ACL) @@ -108,7 +108,7 @@ The types of entities are: - Broker - Underwriter - Insured Party - Functionality differs in the app depending on Entity type byt not on chain. + Functionality differs in the app depending on Entity type but not on chain. #### Policy Types diff --git a/docs/release.md b/docs/release.md index 3842770e..c3d84390 100644 --- a/docs/release.md +++ b/docs/release.md @@ -1,6 +1,6 @@ ## Release Process -This document describe the procedure for making a release from Nayms' smart contracts and publishing those as a package in the global NPM repository. +This document describes the procedure for making a release from Nayms' smart contracts and publishing those as a package in the global NPM repository. There are several steps to be done here, but most important part of the process is actually automated. Mainly, the person making a release should just make sure everything is in place and eventually make manual updates to the auto-generated release notes, if needed. diff --git a/foundry.toml b/foundry.toml index e8505fe0..08f10cb5 100644 --- a/foundry.toml +++ b/foundry.toml @@ -39,14 +39,16 @@ rpc_storage_caching = { chains = "all", endpoints = "all" } no_storage_caching = false # use ipfs method to generate the metadata hash, solc's default. # To not include the metadata hash, to allow for deterministic code: https://docs.soliditylang.org/en/latest/metadata.html, use "none" -bytecode_hash = "ipfs" +bytecode_hash = "none" +# Whether to append the metadata hash to the bytecode +cbor_metadata = false # If this option is enabled, Solc is instructed to generate output (bytecode) only for the required contracts # this can reduce compile time for `forge test` a bit but is considered experimental at this point. sparse_mode = false # Setting this option enables decoding of error traces from mainnet deployed / verfied contracts via etherscan # permissions for read-write fs_permissions = [ - { access = "read-write", path = "./src/diamonds/nayms/interfaces/" }, + { access = "read-write", path = "./src/interfaces/" }, { access = "read-write", path = "./facetsdeployed.txt" }, { access = "read-write", path = "./deployedAddresses.json" }, { access = "read-write", path = "./deployedAddressesTest.json" }, @@ -57,7 +59,7 @@ fs_permissions = [ ] [profile.test] -solc = '0.8.17' +solc = '0.8.20' auto_detect_solc = false optimizer = false ffi = true diff --git a/gemforge.config.cjs b/gemforge.config.cjs new file mode 100644 index 00000000..82826a6d --- /dev/null +++ b/gemforge.config.cjs @@ -0,0 +1,170 @@ +require("dotenv").config(); +const fs = require("fs"); +const ethers = require("ethers"); + +const MNEMONIC = fs.readFileSync("./nayms_mnemonic.txt").toString().trim(); +const MNEMONIC_MAINNET = fs.readFileSync("./nayms_mnemonic_mainnet.txt").toString().trim(); + +const walletOwnerIndex = 19; +const sysAdminAddress = ethers.Wallet.fromMnemonic(MNEMONIC).address; + +module.exports = { + // Configuration file version + version: 2, + // Compiler configuration + solc: { + // SPDX License - to be inserted in all generated .sol files + license: "MIT", + // Solidity compiler version - to be inserted in all generated .sol files + version: "0.8.20", + }, + // commands to execute + commands: { + // the build command + build: "forge build", + }, + paths: { + // contract built artifacts folder + artifacts: "forge-artifacts", + // source files + src: { + // file patterns to include in facet parsing + facets: [ + // include all .sol files in the facets directory ending "Facet" + "src/facets/*Facet.sol", + ], + }, + // folders for gemforge-generated files + generated: { + // output folder for generated .sol files + solidity: "src/generated", + // output folder for support scripts and files + support: ".gemforge", + // deployments JSON file + deployments: "gemforge.deployments.json", + }, + // library source code + lib: { + // diamond library + diamond: "lib/diamond-2-hardhat", + }, + }, + // artifacts configuration + artifacts: { + // artifact format - "foundry" or "hardhat" + format: "foundry", + }, + // generator options + generator: { + // proxy interface options + proxyInterface: { + // imports to include in the generated IDiamondProxy interface + imports: ["src/shared/FreeStructs.sol"], + }, + }, + // diamond configuration + diamond: { + // Whether to include public methods when generating the IDiamondProxy interface. Default is to only include external methods. + publicMethods: false, + init: { + contract: "InitDiamond", + function: "init", + }, + // Names of core facet contracts - these will not be modified/removed once deployed and are also reserved names. + // This default list is taken from the diamond-2-hardhat library. + // NOTE: WE RECOMMEND NOT CHANGING ANY OF THESE EXISTING NAMES UNLESS YOU KNOW WHAT YOU ARE DOING. + coreFacets: [ + "DiamondCutFacet", + "DiamondLoupeFacet", + "NaymsOwnershipFacet", + "ACLFacet", + "GovernanceFacet", + ], + }, + // lifecycle hooks + hooks: { + // shell command to execute before build + preBuild: "", + // shell command to execute after build + postBuild: "", + // shell command to execute before deploy + preDeploy: "", + // shell command to execute after deploy + postDeploy: "./script/gemforge/verify-on-etherscan.js", + }, + // Wallets to use for deployment + wallets: { + wallet1: { + type: "mnemonic", + config: { + words: MNEMONIC, + index: walletOwnerIndex, + }, + }, + wallet2: { + type: "mnemonic", + config: { + words: MNEMONIC_MAINNET, + index: 0 + } + } + }, + networks: { + local: { rpcUrl: "http://localhost:8545" }, + sepolia: { rpcUrl: process.env.ETH_SEPOLIA_RPC_URL }, + sepoliaFork: { rpcUrl: "http://localhost:8545" }, + mainnet: { rpcUrl: process.env.ETH_MAINNET_RPC_URL }, + mainnetFork: { rpcUrl: "http://localhost:8545" }, + baseGoerli: { + rpcUrl: process.env.BASE_GOERLI_RPC_URL, + verifierUrl: "https://api-goerli.basescan.org/api", + }, + base: { + rpcUrl: process.env.BASE_MAINNET_RPC_URL, + verifierUrl: "https://api.basescan.org/api" + }, + baseFork: { rpcUrl: "http://localhost:8545" }, + }, + targets: { + local: { + network: "local", + wallet: "wallet1", + initArgs: [sysAdminAddress], + }, + sepolia: { + network: "sepolia", + wallet: "wallet1", + initArgs: [sysAdminAddress], + }, + sepoliaFork: { + network: "sepoliaFork", + wallet: "wallet1", + initArgs: [sysAdminAddress], + }, + mainnet: { + network: "mainnet", + wallet: "wallet2", + initArgs: [sysAdminAddress], + }, + mainnetFork: { + network: "mainnetFork", + wallet: "wallet1", + initArgs: [], + }, + baseGoerli: { + network: "baseGoerli", + wallet: "wallet1", + initArgs: [sysAdminAddress], + }, + base: { + network: "base", + wallet: "wallet1", + initArgs: [sysAdminAddress], + }, + baseFork: { + network: "baseFork", + wallet: "wallet1", + initArgs: [sysAdminAddress], + }, + }, +}; diff --git a/gemforge.deployments.json b/gemforge.deployments.json new file mode 100644 index 00000000..31f97ead --- /dev/null +++ b/gemforge.deployments.json @@ -0,0 +1,527 @@ +{ + "local": { + "chainId": 31337, + "contracts": [ + { + "name": "DiamondProxy", + "fullyQualifiedName": "DiamondProxy.sol:DiamondProxy", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x147d5ab4233c3028cad72002959cb3d49381ec2e49188ad7043cdf08a0f2ae4d", + "onChain": { + "address": "0x1e560E6adDF76b9335540565a96F4a93f371a56c", + "constructorArgs": ["0x931c3aC09202650148Edb2316e97815f904CF4fa"] + } + }, + { + "name": "ACLFacet", + "fullyQualifiedName": "ACLFacet.sol:ACLFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xb719c4ec85cffb0210e15a0863eb19fb872aded89893dd0fca734d5c32e2e69a", + "onChain": { + "address": "0xeb91C729D4bD06F41C7624E6ef0a40a828479af2", + "constructorArgs": [] + } + }, + { + "name": "AdminFacet", + "fullyQualifiedName": "AdminFacet.sol:AdminFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xd774d7662675c99a3500ec2b45c2b9363b0fc05547fcaca388516379e06175df", + "onChain": { + "address": "0xd6c79E894570d90739c44c2923F84C276567ABf8", + "constructorArgs": [] + } + }, + { + "name": "EntityFacet", + "fullyQualifiedName": "EntityFacet.sol:EntityFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x55dc8688392705a36dbb5dddc54b6f93d4a24c6e441d121c26b9a4fa6c6e8b52", + "onChain": { + "address": "0x4F10acBA59A206a66713380De02F9c09880A822F", + "constructorArgs": [] + } + }, + { + "name": "GovernanceFacet", + "fullyQualifiedName": "GovernanceFacet.sol:GovernanceFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xbe3c8ab394b6405ffbbde26cb4ea079b369d05e00b4ca2405d8d130e1c170d4e", + "onChain": { + "address": "0x175a1077Ccdb3bF380db95889610BF6877Fb104C", + "constructorArgs": [] + } + }, + { + "name": "MarketFacet", + "fullyQualifiedName": "MarketFacet.sol:MarketFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x5567889ac9251a5d04c747f13469db9844e4dd776ca7aa5ac4a7d4d1baeb0250", + "onChain": { + "address": "0x76Ab1953794E1a7F522ADaf20112501dFc671b9f", + "constructorArgs": [] + } + }, + { + "name": "NaymsOwnershipFacet", + "fullyQualifiedName": "NaymsOwnershipFacet.sol:NaymsOwnershipFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xe9e028d7c0c00e719c78adb6471c5645053890fa72bf0b89a9a86fa2ed25d73b", + "onChain": { + "address": "0xC0009342F733B8338C933505B3CE3F30285bb439", + "constructorArgs": [] + } + }, + { + "name": "NaymsTokenFacet", + "fullyQualifiedName": "NaymsTokenFacet.sol:NaymsTokenFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xb1d2e3159243fed61a6e2c9f3cce5d1600bddc7dcf6b4b46351e7089d0e6cbce", + "onChain": { + "address": "0xfADB5dB5d08BBf950256f79C3665CE8d71d8710f", + "constructorArgs": [] + } + }, + { + "name": "PhasedDiamondCutFacet", + "fullyQualifiedName": "PhasedDiamondCutFacet.sol:PhasedDiamondCutFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x583b4759cf52899afa4860e14eb2039cbaf4736f54cb04544530d6974700fc7b", + "onChain": { + "address": "0x60EA14Bad701260fAE76F97639BC568F4e750b29", + "constructorArgs": [] + } + }, + { + "name": "SimplePolicyFacet", + "fullyQualifiedName": "SimplePolicyFacet.sol:SimplePolicyFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xb3f3c3a2c7efc4c03face87f5e85dd166c9fa9b0049f80b3d08cfa723b7fbf77", + "onChain": { + "address": "0x2F64b09a41b400a58D4485f08f6BCF14D944Ad6f", + "constructorArgs": [] + } + }, + { + "name": "SystemFacet", + "fullyQualifiedName": "SystemFacet.sol:SystemFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x87aa947aa042b944e90cce1c08ef0426f36665ab50ab77975c28e8e1bf7c9976", + "onChain": { + "address": "0xE8737e94DcaA61B3354644D3a7177d91Abb7fBC0", + "constructorArgs": [] + } + }, + { + "name": "TokenizedVaultFacet", + "fullyQualifiedName": "TokenizedVaultFacet.sol:TokenizedVaultFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x1f5021f37b0e3aefed37b79f24553442d479015011574ab4a740679530dc78eb", + "onChain": { + "address": "0xC09f543dD405347105146BfD5b799233c69A7C70", + "constructorArgs": [] + } + }, + { + "name": "TokenizedVaultIOFacet", + "fullyQualifiedName": "TokenizedVaultIOFacet.sol:TokenizedVaultIOFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xbd2a1deb1d303916b321984fd46aed841ca2851b0cb05b95834e2a7b0d729fbc", + "onChain": { + "address": "0x0c6815cEB188B0d877B08CF4B1F850Ed0F0929F0", + "constructorArgs": [] + } + }, + { + "name": "UserFacet", + "fullyQualifiedName": "UserFacet.sol:UserFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x91b759d0272233c10bd264d3f4a617a2cd4482c4e8d675c5001084b32f6c96a0", + "onChain": { + "address": "0xfc12A71BF96d541F439C79E3F16654e1c9B97935", + "constructorArgs": [] + } + }, + { + "name": "InitDiamond", + "fullyQualifiedName": "InitDiamond.sol:InitDiamond", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xcdc2d48bcee46e32902f7804f7cfd914d93ee87ba125bab4b0083d0fe3b17b6f", + "onChain": { + "address": "0x002d2970F2AacFD2344d2C1cc35b3985A374A73C", + "constructorArgs": [] + } + } + ] + }, + "sepolia": { + "chainId": 11155111, + "contracts": [ + { + "name": "EntityFacet", + "fullyQualifiedName": "EntityFacet.sol:EntityFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x0f633bc1d2426f98759ef6299177de6d91bb666a8179648a62c6d3affac3d30f", + "onChain": { + "address": "0x3b3b443B3495928E8Ac71A57BD24A955a0B83980", + "constructorArgs": [] + } + }, + { + "name": "DiamondLoupeFacet", + "fullyQualifiedName": "DiamondLoupeFacet.sol:DiamondLoupeFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x95960c773a6971ed179395de2f4377f6899ec947eadc39f8d5eee9724f422df2", + "onChain": { + "address": "0x8381e72d52013a6A4855Ae9107A218C897710777", + "constructorArgs": [] + } + }, + { + "name": "ACLFacet", + "fullyQualifiedName": "ACLFacet.sol:ACLFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x4e1772009286d063493205c9bc8f0a051f192748b12b48044c084694576b0c3d", + "onChain": { + "address": "0xBB9e5f002564B1f9a02E3FC9b053aBa292f1B52E", + "constructorArgs": [] + } + }, + { + "name": "AdminFacet", + "fullyQualifiedName": "AdminFacet.sol:AdminFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x024c5fe581cd77def81a9d534a3b3af751f60081b1a2d300c67cb210d29d34e4", + "onChain": { + "address": "0x44389D8054b7889CC0dd4889d1Fcb8F982BC37F9", + "constructorArgs": [] + } + }, + { + "name": "GovernanceFacet", + "fullyQualifiedName": "GovernanceFacet.sol:GovernanceFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x8250e2b5750665f6ab00a881dbd8319958fb2e7c36e1b2840ce1c4216b39969e", + "onChain": { + "address": "0xE3AE656D094FB3BB2b6bCBB3946DeB51e4a51A7A", + "constructorArgs": [] + } + }, + { + "name": "MarketFacet", + "fullyQualifiedName": "MarketFacet.sol:MarketFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xf8fdd7105c11619bbc763c1d1661f58f40c801d4cbe29d08e2f33e321cc99015", + "onChain": { + "address": "0xca1214F60C23502354f21e3d13b11c66937BE296", + "constructorArgs": [] + } + }, + { + "name": "NaymsOwnershipFacet", + "fullyQualifiedName": "NaymsOwnershipFacet.sol:NaymsOwnershipFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x01d1ca0679a0d12db85b4824b1c0f41ff0708bb523434ae57fd7ada1aa32fb5e", + "onChain": { + "address": "0x4e8352fD8F9ff7403d784e56066E92B6e1a15F72", + "constructorArgs": [] + } + }, + { + "name": "NaymsTokenFacet", + "fullyQualifiedName": "NaymsTokenFacet.sol:NaymsTokenFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x915a2464e15adfb69a9b7581ddb6778b76df3cc97798f21faef0beb1d326e8da", + "onChain": { + "address": "0xA7AB0D21eD2c1BA99FbAC87e6262A8b9a627090F", + "constructorArgs": [] + } + }, + { + "name": "PhasedDiamondCutFacet", + "fullyQualifiedName": "PhasedDiamondCutFacet.sol:PhasedDiamondCutFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x99965c37275b3d00d815b8e3ebc2789a133425f3ddbad092b5dd880849e27616", + "onChain": { + "address": "0xe790188516226108C3b0575326798f1Aad3b7ede", + "constructorArgs": [] + } + }, + { + "name": "SimplePolicyFacet", + "fullyQualifiedName": "SimplePolicyFacet.sol:SimplePolicyFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xcf39d42240b5eafc4967002d3bd957a7510942a1b5096b84fbec128277123c66", + "onChain": { + "address": "0x1b77a00b0AC2d7876C2D235e7c801aa74C9430E6", + "constructorArgs": [] + } + }, + { + "name": "SystemFacet", + "fullyQualifiedName": "SystemFacet.sol:SystemFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x7d3405549dbc999a3be1fd7f94ac9671a784e82d6b378872ba2d588719112c96", + "onChain": { + "address": "0xcD6670ffe9b0Ea4c8d3a031eAE0F9030D102ab8B", + "constructorArgs": [] + } + }, + { + "name": "TokenizedVaultFacet", + "fullyQualifiedName": "TokenizedVaultFacet.sol:TokenizedVaultFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x18bd77e66584105afa92f0d6a78b871cecde6d3a7ba563df122545e3bfa05dfb", + "onChain": { + "address": "0xe85A9D3253F0b36eE9AE39f8d91589Fee1bE5f03", + "constructorArgs": [] + } + }, + { + "name": "TokenizedVaultIOFacet", + "fullyQualifiedName": "TokenizedVaultIOFacet.sol:TokenizedVaultIOFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xe9d9c705489c1f1d8d46b071d0ed85d9bf37bc534f653166879d187eb321053a", + "onChain": { + "address": "0x6aF28959434F4371eC62fA3EE19a710a323D9D1E", + "constructorArgs": [] + } + }, + { + "name": "UserFacet", + "fullyQualifiedName": "UserFacet.sol:UserFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x269943f1520ded5289b3f179e18eaece60c2ad04e7214ac41ab0c237bf681aca", + "onChain": { + "address": "0xf9d185Da79Cc21afde3F7E0d92B74B39eEE99B93", + "constructorArgs": [] + } + }, + { + "name": "DiamondProxy", + "fullyQualifiedName": "DiamondProxy.sol:DiamondProxy", + "sender": "0x0000000000000000000000000000000000000000", + "txHash": "0x0000000000000000000000000000000000000000", + "onChain": { + "address": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "constructorArgs": [] + } + } + ] + }, + "baseGoerli": { + "chainId": 84531, + "contracts": [ + { + "name": "DiamondProxy", + "fullyQualifiedName": "DiamondProxy.sol:DiamondProxy", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x98873f00e84337dde1885cc509a9ead082008f9b5ef7aec6fff03499cce35915", + "onChain": { + "address": "0x99AEa617F26CF33d9e077D09776dFed6CAf8D3CC", + "constructorArgs": ["0x931c3aC09202650148Edb2316e97815f904CF4fa"] + } + }, + { + "name": "ACLFacet", + "fullyQualifiedName": "ACLFacet.sol:ACLFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x7e7298b39bfc5649b2e1ff6d6cd035454444ddc42cc6fb80b8e22778a10f8e72", + "onChain": { + "address": "0xAC6E061DB3aF62c4D4E983bD9928eF451A45395E", + "constructorArgs": [] + } + }, + { + "name": "AdminFacet", + "fullyQualifiedName": "AdminFacet.sol:AdminFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xb49375113c16067eed7ac54e3922fa563a598d1ed297b72ce0545155ea6cd005", + "onChain": { + "address": "0x86bf91892f79DA8BC6F7e75DC4a01FA35681e6BA", + "constructorArgs": [] + } + }, + { + "name": "EntityFacet", + "fullyQualifiedName": "EntityFacet.sol:EntityFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xdb772c295021f51b88c5639f3e6dab51a39ab6b09e2a3af37402d0e0394a7e2e", + "onChain": { + "address": "0x11044388b59e9dB7F9989A2D87ae50C82b6E5416", + "constructorArgs": [] + } + }, + { + "name": "GovernanceFacet", + "fullyQualifiedName": "GovernanceFacet.sol:GovernanceFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xebade7fa70a0409b539010f67215be38fae0cf0428f1629039755b9cade2b964", + "onChain": { + "address": "0xdfE03bFdb0D1Af12D9Dac6efb10BF7ae1f9Ac4AC", + "constructorArgs": [] + } + }, + { + "name": "MarketFacet", + "fullyQualifiedName": "MarketFacet.sol:MarketFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xf48d1506969eb85a92a9969e85e7ecb89fcfd27bdd3668c70bfe02139c16860c", + "onChain": { + "address": "0x398059F1875FaF485711fCef9dCB2aF856A80625", + "constructorArgs": [] + } + }, + { + "name": "NaymsOwnershipFacet", + "fullyQualifiedName": "NaymsOwnershipFacet.sol:NaymsOwnershipFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xf608a3c75ff24a7abe318abe6895bedc928d30b9d4f9e10666254d6d2de65480", + "onChain": { + "address": "0xd4eA3Eb03F22428488223DD336848bfCa34EcB73", + "constructorArgs": [] + } + }, + { + "name": "NaymsTokenFacet", + "fullyQualifiedName": "NaymsTokenFacet.sol:NaymsTokenFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xac33f67e6c3d0ad13478955eb9138b07ea8dcf2fed1454d8e4f83051ff583abb", + "onChain": { + "address": "0x06bEc7aAC7cC3Dd6b1B8a3A01856d31127487861", + "constructorArgs": [] + } + }, + { + "name": "PhasedDiamondCutFacet", + "fullyQualifiedName": "PhasedDiamondCutFacet.sol:PhasedDiamondCutFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x64a110af8345d7e4669792a68c8dfa8b95de4d255b3927ff2eb1d43462b4c292", + "onChain": { + "address": "0x8b000DeB7dF09FCA280Cbd57451AD8002baB3b2A", + "constructorArgs": [] + } + }, + { + "name": "SimplePolicyFacet", + "fullyQualifiedName": "SimplePolicyFacet.sol:SimplePolicyFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xedf7d50398b08b1f33241d29df2245f66dc08b1a36de0ecac5463983008d455b", + "onChain": { + "address": "0x942e5AccF6a1c02640b7f3e53422871A0b6B0B90", + "constructorArgs": [] + } + }, + { + "name": "SystemFacet", + "fullyQualifiedName": "SystemFacet.sol:SystemFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x7b2e13d9dad34abce5aa5f9f4d21cc010b3d76b15988217239b92ca4dbc480be", + "onChain": { + "address": "0x24da9216FD050b124Ab77FC5072E9377566Dc598", + "constructorArgs": [] + } + }, + { + "name": "TokenizedVaultFacet", + "fullyQualifiedName": "TokenizedVaultFacet.sol:TokenizedVaultFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x3e72f1c4e02621a7efda4fa65093d0d73706f0182a9ec0416ad3d22f3721a145", + "onChain": { + "address": "0x1c0e6919d498F3f49f8b7Efdda23C5F7AA56416E", + "constructorArgs": [] + } + }, + { + "name": "TokenizedVaultIOFacet", + "fullyQualifiedName": "TokenizedVaultIOFacet.sol:TokenizedVaultIOFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x23ad77ba78caa021b252a6fa702459729856f9a1d2d2c51f3ac861695fd1e4e0", + "onChain": { + "address": "0xc92124E373b331AA22f8f277651b903aA8e96583", + "constructorArgs": [] + } + }, + { + "name": "UserFacet", + "fullyQualifiedName": "UserFacet.sol:UserFacet", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0xfc92344bd0606b57b346e64fa628a0f06d545c09dc6e8f9343c77d91dfbe0450", + "onChain": { + "address": "0x98e77cBf5DD4e0028c6E6C292503Ed30cA7aF5e2", + "constructorArgs": [] + } + }, + { + "name": "InitDiamond", + "fullyQualifiedName": "InitDiamond.sol:InitDiamond", + "sender": "0x931c3aC09202650148Edb2316e97815f904CF4fa", + "txHash": "0x45989607e953fa915812f74c3e993a8b545072a4dddc273bacaa0a2429686ad0", + "onChain": { + "address": "0xfcA80872073Db2dE6726b087537D7005C235fCeE", + "constructorArgs": [] + } + } + ] + }, + "goerli": { + "chainId": 5, + "contracts": [ + { + "name": "DiamondProxy", + "fullyQualifiedName": "DiamondProxy.sol:DiamondProxy", + "sender": "0x0000000000000000000000000000000000000000", + "txHash": "0x0000000000000000000000000000000000000000", + "onChain": { + "address": "0x428c9347a76943E4c625C11813A303Ca12B8675f", + "constructorArgs": [] + } + } + ] + }, + "mainnet": { + "chainId": 1, + "contracts": [ + { + "name": "DiamondProxy", + "fullyQualifiedName": "DiamondProxy.sol:DiamondProxy", + "sender": "0x0000000000000000000000000000000000000000", + "txHash": "0x0000000000000000000000000000000000000000", + "onChain": { + "address": "0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5", + "constructorArgs": [] + } + } + ] + }, + "mainnetFork": { + "chainId": 1, + "contracts": [ + { + "name": "DiamondProxy", + "fullyQualifiedName": "DiamondProxy.sol:DiamondProxy", + "sender": "0x0000000000000000000000000000000000000000", + "txHash": "0x0000000000000000000000000000000000000000", + "onChain": { + "address": "0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5", + "constructorArgs": [] + } + } + ] + }, + "sepoliaFork": { + "chainId": 11155111, + "contracts": [ + { + "name": "DiamondProxy", + "fullyQualifiedName": "DiamondProxy.sol:DiamondProxy", + "sender": "0x0000000000000000000000000000000000000000", + "txHash": "0x0000000000000000000000000000000000000000", + "onChain": { + "address": "0x7E5462DA297440D2a27fE27d1F291Cf67202302B", + "constructorArgs": [] + } + } + ] + } +} diff --git a/index.js b/index.js index 5caaae6e..b77f9589 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ module.exports = { - Nayms: require("./forge-artifacts/INayms.sol/INayms.json"), + Nayms: require("./src/generated/abi.json"), ERC20: require("./forge-artifacts/IERC20.sol/IERC20.json"), Constants: require("./forge-artifacts/LibConstants.sol/LibConstants.json"), - addresses: require("./deployedAddresses.json"), + targets: require("./gemforge.deployments.json"), }; diff --git a/lib/diamond-2-hardhat b/lib/diamond-2-hardhat new file mode 160000 index 00000000..c455afbe --- /dev/null +++ b/lib/diamond-2-hardhat @@ -0,0 +1 @@ +Subproject commit c455afbe2487f3878581e8edd69721ac17d6e973 diff --git a/lib/forge-std b/lib/forge-std index 4d9985c9..2f112697 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 4d9985c9fb046e5c8572bb173662109aae09d7de +Subproject commit 2f112697506eab12d433a65fdc31a639548fe365 diff --git a/lib/oz b/lib/oz new file mode 160000 index 00000000..ab967b86 --- /dev/null +++ b/lib/oz @@ -0,0 +1 @@ +Subproject commit ab967b863964b5de4a8be5c30796180a78fb3b6e diff --git a/lib/ozv4 b/lib/ozv4 deleted file mode 160000 index 260e082e..00000000 --- a/lib/ozv4 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 260e082ed10e86e5870c4e5859750a8271eeb2b9 diff --git a/lib/solady b/lib/solady new file mode 160000 index 00000000..23cb3cb1 --- /dev/null +++ b/lib/solady @@ -0,0 +1 @@ +Subproject commit 23cb3cb13ea32bc94d9d136666090b36d0485e1c diff --git a/lib/solidity-stringutils b/lib/solidity-stringutils index 46983c6d..4b2fcc43 160000 --- a/lib/solidity-stringutils +++ b/lib/solidity-stringutils @@ -1 +1 @@ -Subproject commit 46983c6d9462a80229cf0d5bab8ea3b3ee31066c +Subproject commit 4b2fcc43fa0426e19ce88b1f1ec16f5903a2e461 diff --git a/lib/solmate b/lib/solmate index 1b3adf67..0384dbaa 160000 --- a/lib/solmate +++ b/lib/solmate @@ -1 +1 @@ -Subproject commit 1b3adf677e7e383cc684b5d5bd441da86bf4bf1c +Subproject commit 0384dbaaa4fcb5715738a9254a7c0a4cb62cf458 diff --git a/package.json b/package.json index 25e2a0ee..979a0012 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nayms/contracts", - "version": "3.6.4", + "version": "3.7.7", "main": "index.js", "repository": "https://github.com/nayms/contracts-v3.git", "author": "Kevin Park ", @@ -9,13 +9,12 @@ "access": "public" }, "files": [ - "forge-artifacts/**", - "broadcast/**", - "deployedAddresses.json", "index.js", - "src/diamonds/nayms/interfaces/**", - "src/diamonds/shared/interfaces/IERC173.sol", - "src/ERC20/IERC20.sol" + "gemforge.deployments.json", + "src/generated/abi.json", + "src/generated/naymsDiamond.json", + "forge-artifacts/LibConstants.sol/LibConstants.json", + "forge-artifacts/IERC20.sol/IERC20.json" ], "scripts": { "prettier": "yarn prettier:test && yarn prettier:src && yarn prettier:script", @@ -31,7 +30,11 @@ "lint": "yarn prettier && yarn run solhint", "lint:check": "yarn prettier:check && yarn run solhint:check", "docgen": "rm -rf docs/facets/*Facet.md && node cli-tools/docgen.js", - "subgraph:abi": "node ./cli-tools/prep-subgraph-abi.js && prettier --write NaymsDiamond.json" + "anvil": "anvil --host 0.0.0.0 --chain-id 31337 --accounts 30 -m ./nayms_mnemonic.txt", + "build": "gemforge build", + "deploy": "./script/gemforge/deploy.js", + "query": "gemforge query", + "test": "forge test --no-match-test testReplaceDiamondCut" }, "devDependencies": { "chalk": "4", @@ -45,10 +48,11 @@ "eslint-plugin-promise": "^6.0.0", "ethereum-waffle": "^3.4.4", "ethers": "^5.6.9", + "gemforge": "^2.6.4", "glob": "^8.0.3", "prettier": "^2.7.1", "prettier-plugin-solidity": "^1.0.0-beta.19", - "solc": "0.8.17", + "solc": "0.8.20", "solhint": "^3.3.7", "solidity-coverage": "^0.7.21", "solidity-docgen": "^0.5.17" @@ -56,4 +60,4 @@ "dependencies": { "yarn": "^1.22.19" } -} \ No newline at end of file +} diff --git a/remappings.txt b/remappings.txt index a7f416b4..bdfe0f9e 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,9 +1,10 @@ -@uniswap/v3-core/=lib/v3-core/ -@uniswap/v3-periphery/=lib/v3-periphery/ -@uniswap/v2-core/=lib/v2-core/ -@uniswap/lib/=lib/solidity-lib/ -base64-sol/=lib/base64/ -@openzeppelin/=lib/ozv4/ -src/=./src/ -test/=./test/ -script/=./script/ \ No newline at end of file +forge-std/=lib/forge-std/src/ +@openzeppelin/contracts/=lib/oz/contracts/ +diamond-2-hardhat/=lib/diamond-2-hardhat/contracts/ +ds-test/=lib/ds-test/src/ +erc4626-tests/=lib/oz/lib/erc4626-tests/ +oz/=lib/oz/ +solady/=lib/solady/ +solidity-lib/=lib/solidity-lib/contracts/ +solidity-stringutils/=lib/solidity-stringutils/ +solmate/=lib/solmate/src/ diff --git a/script/AddSupportedExternalToken.s.sol b/script/AddSupportedExternalToken.s.sol index 6602be9c..6cb15630 100644 --- a/script/AddSupportedExternalToken.s.sol +++ b/script/AddSupportedExternalToken.s.sol @@ -1,17 +1,18 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import "forge-std/Script.sol"; -import { INayms, IDiamondCut } from "src/diamonds/nayms/INayms.sol"; -import { LibHelpers } from "src/diamonds/nayms/libs/LibHelpers.sol"; +import { DiamondProxy } from "src/generated/DiamondProxy.sol"; +import { IDiamondProxy } from "src/generated/IDiamondProxy.sol"; +import { LibHelpers } from "src/libs/LibHelpers.sol"; contract AddSupportedExternalToken is Script { - function addSupportedExternalToken(address naymsDiamondAddress, address externalToken) public { + function addSupportedExternalToken(address naymsDiamondAddress, address externalToken, uint256 minimumSell) public { vm.startBroadcast(msg.sender); - INayms nayms = INayms(naymsDiamondAddress); + IDiamondProxy nayms = IDiamondProxy(naymsDiamondAddress); - nayms.addSupportedExternalToken(externalToken); + nayms.addSupportedExternalToken(externalToken, minimumSell); bytes32 tokenId = LibHelpers._getIdForAddress(externalToken); diff --git a/script/CheckBytecode.s.sol b/script/CheckBytecode.s.sol index e1019ce4..bf651d43 100644 --- a/script/CheckBytecode.s.sol +++ b/script/CheckBytecode.s.sol @@ -1,118 +1,118 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { INayms } from "src/diamonds/nayms/INayms.sol"; -import "script/utils/DeploymentHelpers.sol"; -import { strings } from "lib/solidity-stringutils/src/strings.sol"; - -error EmptyAddressFromSelector(string _facetName); - -enum CheckBytecodeAction { - WithMetadata, // With the metadata bytecode hash appended to the runtime bytecode - NoMetadata // With the metadata bytecode hash REMOVED from the runtime bytecode -} - -contract CheckBytecode is DeploymentHelpers { - using strings for *; - address[] public facetAddresses; - mapping(string => bool) public matching; - mapping(string => bool) public matchingNoCBOR; - mapping(string => address) public facetAddressesByName; - string[] public allFacetNames; - strings.slice needle1 = "a264".toSlice(); - - function run(CheckBytecodeAction _checkBytecode) external { - address diamondAddress = getDiamondAddressFromFile(); - INayms nayms = INayms(diamondAddress); - facetAddresses = nayms.facetAddresses(); - - allFacetNames = LibGeneratedNaymsFacetHelpers.getFacetNames(); - uint256 numberOfFacets = allFacetNames.length; - - if (_checkBytecode == CheckBytecodeAction.WithMetadata) { - for (uint256 i; i < numberOfFacets; ++i) { - if (compareBytecode(address(nayms), allFacetNames[i])) { - matching[allFacetNames[i]] = true; - console2.log("Bytecode matches for facet: ", allFacetNames[i]); - } - } - for (uint256 i; i < numberOfFacets; ++i) { - if (matching[allFacetNames[i]] == false) { - console2.log("Bytecode does NOT match for facet: ", allFacetNames[i]); - } - } - } - - if (_checkBytecode == CheckBytecodeAction.NoMetadata) { - string memory artifactsDeployedByteccodeString; - string memory targetFacetBytecodeString; - - bool bytecodeMatchFlag; - for (uint256 i; i < numberOfFacets; ++i) { - string memory artifactsDeployedByteccodeString = vm.toString( - vm.getDeployedCode(string.concat(artifactsPath, allFacetNames[i], "Facet.sol/", allFacetNames[i], "Facet.json")) - ); - strings.slice memory artifactsDeployedByteccodeSlice = artifactsDeployedByteccodeString.toSlice(); - - bytes4[] memory functionSignatures = generateSelectors(string.concat(allFacetNames[i], "Facet")); - uint256 numberOfFunctionSignaturesFromArtifact = functionSignatures.length; - // get first non zero address - address targetFacetAddress; - for (uint256 j; j < numberOfFunctionSignaturesFromArtifact; j++) { - targetFacetAddress = IDiamondLoupe(diamondAddress).facetAddress(functionSignatures[j]); - if (targetFacetAddress != address(0)) { - facetAddressesByName[allFacetNames[i]] = targetFacetAddress; - break; - } - } - - // diamond does not have a facet with selectors from this facet from this repository - if (facetAddressesByName[allFacetNames[i]] == address(0)) { - revert EmptyAddressFromSelector(allFacetNames[i]); - } - - bytes memory targetFacetBytecode = targetFacetAddress.code; - targetFacetBytecodeString = vm.toString(targetFacetBytecode); - strings.slice memory targetFacetBytecodeSlice = targetFacetBytecodeString.toSlice(); - - bytecodeMatchFlag = strEquals(artifactsDeployedByteccodeSlice.rfind(needle1).toString(), targetFacetBytecodeSlice.rfind(needle1).toString()); - matchingNoCBOR[allFacetNames[i]] = bytecodeMatchFlag; - } - - for (uint256 i; i < numberOfFacets; ++i) { - if (matchingNoCBOR[allFacetNames[i]] == true) { - console2.log("Bytecode matches for facet", allFacetNames[i], vm.toString(facetAddressesByName[allFacetNames[i]])); - } - } - - for (uint256 i; i < numberOfFacets; ++i) { - if (matchingNoCBOR[allFacetNames[i]] == false) { - console2.log("Bytecode does NOT match for facet: ", allFacetNames[i], vm.toString(facetAddressesByName[allFacetNames[i]])); - } - } - } - - // compareContractBytecode("Nayms", 0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5); - // compareContractBytecode("PhasedDiamondCutFacet", 0x168bBc195167cd1EbD70584fcEEA54cc630DB7c7); - // compareContractBytecode("NaymsOwnershipFacet", 0x073C1a072845D1d87f42309af9911bd3c07fC599); - } - - function strEquals(string memory s1, string memory s2) private pure returns (bool) { - return keccak256(abi.encodePacked(s1)) == keccak256(abi.encodePacked(s2)); - } - - function compareContractBytecode(string memory contractName, address targetFacetAddress) internal returns (bool bytecodeMatchFlag) { - facetAddressesByName[contractName] = targetFacetAddress; - allFacetNames.push(contractName); - - string memory artifactsDeployedByteccodeString = vm.toString(vm.getDeployedCode(string.concat(artifactsPath, contractName, ".sol/", contractName, ".json"))); - strings.slice memory artifactsDeployedByteccodeSlice = artifactsDeployedByteccodeString.toSlice(); - - bytes memory targetFacetBytecode = targetFacetAddress.code; - string memory targetFacetBytecodeString = vm.toString(targetFacetBytecode); - strings.slice memory targetFacetBytecodeSlice = targetFacetBytecodeString.toSlice(); - - bytecodeMatchFlag = strEquals(artifactsDeployedByteccodeSlice.rfind(needle1).toString(), targetFacetBytecodeSlice.rfind(needle1).toString()); - matchingNoCBOR[contractName] = bytecodeMatchFlag; - } -} +// // SPDX-License-Identifier: MIT +// pragma solidity 0.8.20; + +// import { INayms } from "src/diamonds/nayms/INayms.sol"; +// import "script/utils/DeploymentHelpers.sol"; +// import { strings } from "lib/solidity-stringutils/src/strings.sol"; + +// error EmptyAddressFromSelector(string _facetName); + +// enum CheckBytecodeAction { +// WithMetadata, // With the metadata bytecode hash appended to the runtime bytecode +// NoMetadata // With the metadata bytecode hash REMOVED from the runtime bytecode +// } + +// contract CheckBytecode is DeploymentHelpers { +// using strings for *; +// address[] public facetAddresses; +// mapping(string => bool) public matching; +// mapping(string => bool) public matchingNoCBOR; +// mapping(string => address) public facetAddressesByName; +// string[] public allFacetNames; +// strings.slice needle1 = "a264".toSlice(); + +// function run(CheckBytecodeAction _checkBytecode) external { +// address diamondAddress = getDiamondAddressFromFile(); +// INayms nayms = INayms(diamondAddress); +// facetAddresses = nayms.facetAddresses(); + +// allFacetNames = LibGeneratedNaymsFacetHelpers.getFacetNames(); +// uint256 numberOfFacets = allFacetNames.length; + +// if (_checkBytecode == CheckBytecodeAction.WithMetadata) { +// for (uint256 i; i < numberOfFacets; ++i) { +// if (compareBytecode(address(nayms), allFacetNames[i])) { +// matching[allFacetNames[i]] = true; +// console2.log("Bytecode matches for facet: ", allFacetNames[i]); +// } +// } +// for (uint256 i; i < numberOfFacets; ++i) { +// if (matching[allFacetNames[i]] == false) { +// console2.log("Bytecode does NOT match for facet: ", allFacetNames[i]); +// } +// } +// } + +// if (_checkBytecode == CheckBytecodeAction.NoMetadata) { +// string memory artifactsDeployedByteccodeString; +// string memory targetFacetBytecodeString; + +// bool bytecodeMatchFlag; +// for (uint256 i; i < numberOfFacets; ++i) { +// string memory artifactsDeployedByteccodeString = vm.toString( +// vm.getDeployedCode(string.concat(artifactsPath, allFacetNames[i], "Facet.sol/", allFacetNames[i], "Facet.json")) +// ); +// strings.slice memory artifactsDeployedByteccodeSlice = artifactsDeployedByteccodeString.toSlice(); + +// bytes4[] memory functionSignatures = generateSelectors(string.concat(allFacetNames[i], "Facet")); +// uint256 numberOfFunctionSignaturesFromArtifact = functionSignatures.length; +// // get first non zero address +// address targetFacetAddress; +// for (uint256 j; j < numberOfFunctionSignaturesFromArtifact; j++) { +// targetFacetAddress = IDiamondLoupe(diamondAddress).facetAddress(functionSignatures[j]); +// if (targetFacetAddress != address(0)) { +// facetAddressesByName[allFacetNames[i]] = targetFacetAddress; +// break; +// } +// } + +// // diamond does not have a facet with selectors from this facet from this repository +// if (facetAddressesByName[allFacetNames[i]] == address(0)) { +// revert EmptyAddressFromSelector(allFacetNames[i]); +// } + +// bytes memory targetFacetBytecode = targetFacetAddress.code; +// targetFacetBytecodeString = vm.toString(targetFacetBytecode); +// strings.slice memory targetFacetBytecodeSlice = targetFacetBytecodeString.toSlice(); + +// bytecodeMatchFlag = strEquals(artifactsDeployedByteccodeSlice.rfind(needle1).toString(), targetFacetBytecodeSlice.rfind(needle1).toString()); +// matchingNoCBOR[allFacetNames[i]] = bytecodeMatchFlag; +// } + +// for (uint256 i; i < numberOfFacets; ++i) { +// if (matchingNoCBOR[allFacetNames[i]] == true) { +// console2.log("Bytecode matches for facet", allFacetNames[i], vm.toString(facetAddressesByName[allFacetNames[i]])); +// } +// } + +// for (uint256 i; i < numberOfFacets; ++i) { +// if (matchingNoCBOR[allFacetNames[i]] == false) { +// console2.log("Bytecode does NOT match for facet: ", allFacetNames[i], vm.toString(facetAddressesByName[allFacetNames[i]])); +// } +// } +// } + +// // compareContractBytecode("Nayms", 0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5); +// // compareContractBytecode("PhasedDiamondCutFacet", 0x168bBc195167cd1EbD70584fcEEA54cc630DB7c7); +// // compareContractBytecode("NaymsOwnershipFacet", 0x073C1a072845D1d87f42309af9911bd3c07fC599); +// } + +// function strEquals(string memory s1, string memory s2) private pure returns (bool) { +// return keccak256(abi.encodePacked(s1)) == keccak256(abi.encodePacked(s2)); +// } + +// function compareContractBytecode(string memory contractName, address targetFacetAddress) internal returns (bool bytecodeMatchFlag) { +// facetAddressesByName[contractName] = targetFacetAddress; +// allFacetNames.push(contractName); + +// string memory artifactsDeployedByteccodeString = vm.toString(vm.getDeployedCode(string.concat(artifactsPath, contractName, ".sol/", contractName, ".json"))); +// strings.slice memory artifactsDeployedByteccodeSlice = artifactsDeployedByteccodeString.toSlice(); + +// bytes memory targetFacetBytecode = targetFacetAddress.code; +// string memory targetFacetBytecodeString = vm.toString(targetFacetBytecode); +// strings.slice memory targetFacetBytecodeSlice = targetFacetBytecodeString.toSlice(); + +// bytecodeMatchFlag = strEquals(artifactsDeployedByteccodeSlice.rfind(needle1).toString(), targetFacetBytecodeSlice.rfind(needle1).toString()); +// matchingNoCBOR[contractName] = bytecodeMatchFlag; +// } +// } diff --git a/script/CodeRecon.s.sol b/script/CodeRecon.s.sol index a84cc3ba..97cdd68f 100644 --- a/script/CodeRecon.s.sol +++ b/script/CodeRecon.s.sol @@ -1,165 +1,165 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { strings } from "lib/solidity-stringutils/src/strings.sol"; -import { IDiamondLoupe } from "src/diamonds/shared/interfaces/IDiamondLoupe.sol"; -import "script/utils/DeploymentHelpers.sol"; - -struct ReconResult { - string contractName; - address contractAddress; - bytes artifactCode; - bytes onChainCode; - bool isMatchingWithMetadata; - bool isMatchingWithoutMetadata; -} -struct ReconInfo { - uint256 chainId; - uint256 blockNumber; - uint256 timestamp; - ReconResult[] reconResult; - address[] addressesNotMatching; - string[] namesNotMatching; -} - -library LibSearch { - function arrayIntersection( - mapping(string => bool) storage matchResultMapping, - mapping(bytes32 => bool) storage tMap, - mapping(bytes32 => string) storage codeToName, - bytes32[] memory arr1, - bytes32[] memory arr2 - ) internal { - // Loop through the second array and map all elements to true - for (uint256 i; i < arr2.length; i++) { - tMap[arr2[i]] = true; - } - - // Loop through the first array and check if any element exists in the map - for (uint256 i; i < arr1.length; i++) { - if (tMap[arr1[i]]) { - matchResultMapping[codeToName[arr1[i]]] = true; - } - } - } -} - -contract CodeRecon is DeploymentHelpers { - using strings for *; - using LibSearch for mapping(string => bool); - - mapping(bytes32 => bool) tMap; - address[] public contractAddresses; - string[] public contractNames; - bytes32[] public onChainCode; - bytes32[] public onChainCodeWithoutMetadata; - bytes32[] public artifactCode; - bytes32[] public artifactCodeWithoutMetadata; - mapping(bytes32 => string) public artifactCodeToName; - mapping(bytes32 => string) public artifactCodeWithoutMetadataToName; - mapping(string => bool) public matching; - mapping(string => bool) public matchingWithoutMetadata; - address[] addressesNotMatching; - string[] namesNotMatching; - - mapping(bytes32 => address) onChainCodeToAddress; - mapping(address => bytes32) addressToOnChainCode; - mapping(bytes32 => address) onChainCodeWithoutMetadataToAddress; - mapping(address => bytes32) addressToOnChainCodeWithoutMetadata; - - function getOnchainCode(address proxyDiamondAddress) public { - strings.slice memory needle1 = "a264".toSlice(); - - IDiamondLoupe diamond = IDiamondLoupe(proxyDiamondAddress); - contractAddresses = diamond.facetAddresses(); - contractAddresses.push(proxyDiamondAddress); - - for (uint256 i; i < contractAddresses.length; ++i) { - onChainCode.push(keccak256(contractAddresses[i].code)); - onChainCodeWithoutMetadata.push(keccak256(bytes(vm.toString(contractAddresses[i].code).toSlice().rfind(needle1).toString()))); - - onChainCodeToAddress[keccak256(contractAddresses[i].code)] = contractAddresses[i]; - addressToOnChainCode[contractAddresses[i]] = keccak256(contractAddresses[i].code); - onChainCodeWithoutMetadataToAddress[keccak256(bytes(vm.toString(contractAddresses[i].code).toSlice().rfind(needle1).toString()))] = contractAddresses[i]; - addressToOnChainCodeWithoutMetadata[contractAddresses[i]] = keccak256(bytes(vm.toString(contractAddresses[i].code).toSlice().rfind(needle1).toString())); - } - } - - function getArtifactCode(string[] memory contractName) public { - contractNames = contractName; - - strings.slice memory needle1 = "a264".toSlice(); - for (uint256 i; i < contractName.length; ++i) { - bytes memory artifactCode_ = vm.getDeployedCode(string.concat(contractName[i], ".sol:", contractName[i])); - bytes32 keccakArtifactCode = keccak256(artifactCode_); - artifactCode.push(keccak256(artifactCode_)); - artifactCodeToName[keccakArtifactCode] = contractName[i]; - - bytes32 artifactCodeWithoutMetadata_ = keccak256(bytes(vm.toString(artifactCode_).toSlice().rfind(needle1).toString())); - artifactCodeWithoutMetadata.push(artifactCodeWithoutMetadata_); - artifactCodeWithoutMetadataToName[artifactCodeWithoutMetadata_] = contractName[i]; - } - } - - function compareCode(string[] memory contractName) public { - getArtifactCode(contractName); - getOnchainCode(getDiamondAddressFromFile()); - - matching.arrayIntersection(tMap, artifactCodeToName, onChainCode, artifactCode); - matchingWithoutMetadata.arrayIntersection(tMap, artifactCodeWithoutMetadataToName, onChainCodeWithoutMetadata, artifactCodeWithoutMetadata); - for (uint256 i; i < contractAddresses.length; ++i) { - if (matchingWithoutMetadata[artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]]]) { - console2.log("Bytecode WITHOUT metadata matches for facet", artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]], vm.toString(contractAddresses[i])); - } - } - - for (uint256 i; i < contractAddresses.length; ++i) { - if (!matchingWithoutMetadata[artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]]]) { - console2.log( - "Bytecode WITHOUT metadata DOES NOT MATCH for facet", - artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]], - vm.toString(contractAddresses[i]) - ); - addressesNotMatching.push(contractAddresses[i]); - } - } - } - - function genOutput() public { - string memory path = "codeReconReport.json"; - - vm.serializeUint("ReconInfo", "chainId", uint256(block.chainid)); - vm.serializeUint("ReconInfo", "blockNumber", uint256(block.number)); - vm.serializeUint("ReconInfo", "timestamp", uint256(block.timestamp)); - - string[] memory reconResults = new string[](contractAddresses.length); - - for (uint256 i; i < contractAddresses.length; ++i) { - if (!matchingWithoutMetadata[contractNames[i]]) { - namesNotMatching.push(contractNames[i]); - } - - vm.serializeString(string.concat("reconResult", vm.toString(i)), "contractName", artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]]); - vm.serializeAddress(string.concat("reconResult", vm.toString(i)), "contractAddress", onChainCodeWithoutMetadataToAddress[onChainCodeWithoutMetadata[i]]); - // vm.serializeBytes(string.concat("reconResult", vm.toString(i)), "artifactCode", reconResult.artifactCode); - // vm.serializeBytes(string.concat("reconResult", vm.toString(i)), "onChainCode", reconResult.onChainCode); - vm.serializeBool(string.concat("reconResult", vm.toString(i)), "isMatchingWithMetadata", matching[artifactCodeToName[onChainCode[i]]]); - reconResults[i] = vm.serializeBool( - string.concat("reconResult", vm.toString(i)), - "isMatchingWithoutMetadata", - matchingWithoutMetadata[artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]]] - ); - } - - vm.serializeAddress("ReconInfo", "addressesNotMatching", addressesNotMatching); - vm.serializeString("ReconInfo", "namesNotMatching", namesNotMatching); - - string memory finalJson = vm.serializeString("ReconInfo", "reconResult", reconResults); - vm.writeJson(finalJson, path); - } - - function run(string[] memory contractName) public { - compareCode(contractName); - genOutput(); - } -} +// // SPDX-License-Identifier: MIT +// pragma solidity 0.8.20; + +// import { strings } from "lib/solidity-stringutils/src/strings.sol"; +// import { IDiamondLoupe } from "src/diamonds/shared/interfaces/IDiamondLoupe.sol"; +// import "script/utils/DeploymentHelpers.sol"; + +// struct ReconResult { +// string contractName; +// address contractAddress; +// bytes artifactCode; +// bytes onChainCode; +// bool isMatchingWithMetadata; +// bool isMatchingWithoutMetadata; +// } +// struct ReconInfo { +// uint256 chainId; +// uint256 blockNumber; +// uint256 timestamp; +// ReconResult[] reconResult; +// address[] addressesNotMatching; +// string[] namesNotMatching; +// } + +// library LibSearch { +// function arrayIntersection( +// mapping(string => bool) storage matchResultMapping, +// mapping(bytes32 => bool) storage tMap, +// mapping(bytes32 => string) storage codeToName, +// bytes32[] memory arr1, +// bytes32[] memory arr2 +// ) internal { +// // Loop through the second array and map all elements to true +// for (uint256 i; i < arr2.length; i++) { +// tMap[arr2[i]] = true; +// } + +// // Loop through the first array and check if any element exists in the map +// for (uint256 i; i < arr1.length; i++) { +// if (tMap[arr1[i]]) { +// matchResultMapping[codeToName[arr1[i]]] = true; +// } +// } +// } +// } + +// contract CodeRecon is DeploymentHelpers { +// using strings for *; +// using LibSearch for mapping(string => bool); + +// mapping(bytes32 => bool) tMap; +// address[] public contractAddresses; +// string[] public contractNames; +// bytes32[] public onChainCode; +// bytes32[] public onChainCodeWithoutMetadata; +// bytes32[] public artifactCode; +// bytes32[] public artifactCodeWithoutMetadata; +// mapping(bytes32 => string) public artifactCodeToName; +// mapping(bytes32 => string) public artifactCodeWithoutMetadataToName; +// mapping(string => bool) public matching; +// mapping(string => bool) public matchingWithoutMetadata; +// address[] addressesNotMatching; +// string[] namesNotMatching; + +// mapping(bytes32 => address) onChainCodeToAddress; +// mapping(address => bytes32) addressToOnChainCode; +// mapping(bytes32 => address) onChainCodeWithoutMetadataToAddress; +// mapping(address => bytes32) addressToOnChainCodeWithoutMetadata; + +// function getOnchainCode(address proxyDiamondAddress) public { +// strings.slice memory needle1 = "a264".toSlice(); + +// IDiamondLoupe diamond = IDiamondLoupe(proxyDiamondAddress); +// contractAddresses = diamond.facetAddresses(); +// contractAddresses.push(proxyDiamondAddress); + +// for (uint256 i; i < contractAddresses.length; ++i) { +// onChainCode.push(keccak256(contractAddresses[i].code)); +// onChainCodeWithoutMetadata.push(keccak256(bytes(vm.toString(contractAddresses[i].code).toSlice().rfind(needle1).toString()))); + +// onChainCodeToAddress[keccak256(contractAddresses[i].code)] = contractAddresses[i]; +// addressToOnChainCode[contractAddresses[i]] = keccak256(contractAddresses[i].code); +// onChainCodeWithoutMetadataToAddress[keccak256(bytes(vm.toString(contractAddresses[i].code).toSlice().rfind(needle1).toString()))] = contractAddresses[i]; +// addressToOnChainCodeWithoutMetadata[contractAddresses[i]] = keccak256(bytes(vm.toString(contractAddresses[i].code).toSlice().rfind(needle1).toString())); +// } +// } + +// function getArtifactCode(string[] memory contractName) public { +// contractNames = contractName; + +// strings.slice memory needle1 = "a264".toSlice(); +// for (uint256 i; i < contractName.length; ++i) { +// bytes memory artifactCode_ = vm.getDeployedCode(string.concat(contractName[i], ".sol:", contractName[i])); +// bytes32 keccakArtifactCode = keccak256(artifactCode_); +// artifactCode.push(keccak256(artifactCode_)); +// artifactCodeToName[keccakArtifactCode] = contractName[i]; + +// bytes32 artifactCodeWithoutMetadata_ = keccak256(bytes(vm.toString(artifactCode_).toSlice().rfind(needle1).toString())); +// artifactCodeWithoutMetadata.push(artifactCodeWithoutMetadata_); +// artifactCodeWithoutMetadataToName[artifactCodeWithoutMetadata_] = contractName[i]; +// } +// } + +// function compareCode(string[] memory contractName) public { +// getArtifactCode(contractName); +// getOnchainCode(getDiamondAddressFromFile()); + +// matching.arrayIntersection(tMap, artifactCodeToName, onChainCode, artifactCode); +// matchingWithoutMetadata.arrayIntersection(tMap, artifactCodeWithoutMetadataToName, onChainCodeWithoutMetadata, artifactCodeWithoutMetadata); +// for (uint256 i; i < contractAddresses.length; ++i) { +// if (matchingWithoutMetadata[artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]]]) { +// console2.log("Bytecode WITHOUT metadata matches for facet", artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]], vm.toString(contractAddresses[i])); +// } +// } + +// for (uint256 i; i < contractAddresses.length; ++i) { +// if (!matchingWithoutMetadata[artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]]]) { +// console2.log( +// "Bytecode WITHOUT metadata DOES NOT MATCH for facet", +// artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]], +// vm.toString(contractAddresses[i]) +// ); +// addressesNotMatching.push(contractAddresses[i]); +// } +// } +// } + +// function genOutput() public { +// string memory path = "codeReconReport.json"; + +// vm.serializeUint("ReconInfo", "chainId", uint256(block.chainid)); +// vm.serializeUint("ReconInfo", "blockNumber", uint256(block.number)); +// vm.serializeUint("ReconInfo", "timestamp", uint256(block.timestamp)); + +// string[] memory reconResults = new string[](contractAddresses.length); + +// for (uint256 i; i < contractAddresses.length; ++i) { +// if (!matchingWithoutMetadata[contractNames[i]]) { +// namesNotMatching.push(contractNames[i]); +// } + +// vm.serializeString(string.concat("reconResult", vm.toString(i)), "contractName", artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]]); +// vm.serializeAddress(string.concat("reconResult", vm.toString(i)), "contractAddress", onChainCodeWithoutMetadataToAddress[onChainCodeWithoutMetadata[i]]); +// // vm.serializeBytes(string.concat("reconResult", vm.toString(i)), "artifactCode", reconResult.artifactCode); +// // vm.serializeBytes(string.concat("reconResult", vm.toString(i)), "onChainCode", reconResult.onChainCode); +// vm.serializeBool(string.concat("reconResult", vm.toString(i)), "isMatchingWithMetadata", matching[artifactCodeToName[onChainCode[i]]]); +// reconResults[i] = vm.serializeBool( +// string.concat("reconResult", vm.toString(i)), +// "isMatchingWithoutMetadata", +// matchingWithoutMetadata[artifactCodeWithoutMetadataToName[onChainCodeWithoutMetadata[i]]] +// ); +// } + +// vm.serializeAddress("ReconInfo", "addressesNotMatching", addressesNotMatching); +// vm.serializeString("ReconInfo", "namesNotMatching", namesNotMatching); + +// string memory finalJson = vm.serializeString("ReconInfo", "reconResult", reconResults); +// vm.writeJson(finalJson, path); +// } + +// function run(string[] memory contractName) public { +// compareCode(contractName); +// genOutput(); +// } +// } diff --git a/script/CreateEntity.s.sol b/script/CreateEntity.s.sol index 48aed805..2e0f9283 100644 --- a/script/CreateEntity.s.sol +++ b/script/CreateEntity.s.sol @@ -1,19 +1,23 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import "forge-std/Script.sol"; -import { INayms, IDiamondCut } from "src/diamonds/nayms/INayms.sol"; -import { Entity } from "src/diamonds/nayms/interfaces/FreeStructs.sol"; -import { LibAdmin } from "src/diamonds/nayms/libs/LibAdmin.sol"; -import { LibConstants } from "src/diamonds/nayms/libs/LibConstants.sol"; -import { LibHelpers } from "src/diamonds/nayms/libs/LibHelpers.sol"; + +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; +import { DiamondProxy } from "src/generated/DiamondProxy.sol"; +import { IDiamondProxy } from "src/generated/IDiamondProxy.sol"; + +import { Entity } from "src/shared/FreeStructs.sol"; +import { LibAdmin } from "src/libs/LibAdmin.sol"; +import { LibConstants } from "src/libs/LibConstants.sol"; +import { LibHelpers } from "src/libs/LibHelpers.sol"; import { MockERC20 } from "solmate/test/utils/mocks/MockERC20.sol"; contract CreateEntity is Script { MockERC20 public wbtc; function createAnEntity(address naymsDiamondAddress) public { - INayms nayms = INayms(naymsDiamondAddress); + IDiamondProxy nayms = IDiamondProxy(naymsDiamondAddress); wbtc = new MockERC20("Wrapped BTC", "WBTC", 18); @@ -33,7 +37,7 @@ contract CreateEntity is Script { vm.startPrank(msg.sender); - nayms.addSupportedExternalToken(address(wbtc)); + nayms.addSupportedExternalToken(address(wbtc), 1e13); nayms.createEntity(eAlice, aliceId, entity, "entity test hash"); } } diff --git a/script/UpdateCommissions.sol b/script/UpdateCommissions.sol index 841c4479..1f2c47c9 100644 --- a/script/UpdateCommissions.sol +++ b/script/UpdateCommissions.sol @@ -1,5 +1,5 @@ // // SPDX-License-Identifier: MIT -// pragma solidity 0.8.17; +// pragma solidity 0.8.20; // import "forge-std/console2.sol"; // import "forge-std/Script.sol"; diff --git a/script/deployment/DeployERC20.s.sol b/script/deployment/DeployERC20.s.sol index 8e5cc4b3..bfb73015 100644 --- a/script/deployment/DeployERC20.s.sol +++ b/script/deployment/DeployERC20.s.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /// @notice Quickly deploy a mock ERC20 token, for testing only! @@ -7,11 +7,7 @@ import "forge-std/Script.sol"; import { ERC20 } from "solmate/tokens/ERC20.sol"; contract MockERC20 is ERC20 { - constructor( - string memory _name, - string memory _symbol, - uint8 _decimals - ) ERC20(_name, _symbol, _decimals) {} + constructor(string memory _name, string memory _symbol, uint8 _decimals) ERC20(_name, _symbol, _decimals) {} function mint(address to, uint256 value) public virtual { _mint(to, value); @@ -34,19 +30,7 @@ contract MockERC20 is ERC20 { } contract DeployERC20 is Script { - function deploy( - string memory _name, - string memory _symbol, - uint8 _decimals - ) - public - returns ( - address, - string memory name, - string memory symbol, - uint8 decimals - ) - { + function deploy(string memory _name, string memory _symbol, uint8 _decimals) public returns (address, string memory name, string memory symbol, uint8 decimals) { console2.log("Chain ID", block.chainid); vm.broadcast(); diff --git a/script/deployment/DiamondChecker.s.sol b/script/deployment/DiamondChecker.s.sol deleted file mode 100644 index 11e961eb..00000000 --- a/script/deployment/DiamondChecker.s.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { IDiamondCut } from "src/diamonds/nayms/INayms.sol"; -import "script/utils/DeploymentHelpers.sol"; - -contract DiamondChecker is DeploymentHelpers { - /// Does this facet address exist in this diamond? - function run(address _facetAddressToCheck, bytes4 _selectorChk) external returns (bool) { - INayms nayms = INayms(getDiamondAddressFromFile()); - - address[] memory addresses = nayms.facetAddresses(); - - address selectorAddressChk = nayms.facetAddress(_selectorChk); - - console2.log("facet that selector is associated with: ", selectorAddressChk); - - for (uint256 i; i < addresses.length; i++) { - if (addresses[i] == _facetAddressToCheck) { - return true; - } - } - } -} diff --git a/script/deployment/GenerateInterfaces.s.sol b/script/deployment/GenerateInterfaces.s.sol deleted file mode 100644 index 0a8d05da..00000000 --- a/script/deployment/GenerateInterfaces.s.sol +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import "script/utils/DeploymentHelpers.sol"; -import "script/utils/LibGeneratedNaymsFacetHelpers.sol"; - -contract GenerateInterfaces is DeploymentHelpers { - function run(string memory pathToOutput, string memory solVersion) external { - if (keccak256(abi.encodePacked(pathToOutput)) == keccak256(abi.encodePacked(""))) { - pathToOutput = "test-interfaces"; - } - string[] memory facetNames = LibGeneratedNaymsFacetHelpers.getFacetNames(); - - string memory artifactFile; - string memory outputPathAndName; - - string memory interfaceName; - string[] memory inputs = new string[](9); - inputs[0] = "cast"; - inputs[1] = "interface"; - inputs[2] = artifactFile; - inputs[3] = "-o"; - inputs[4] = outputPathAndName; - inputs[5] = "-n"; - inputs[7] = "-p"; - inputs[8] = solVersion; - - for (uint256 i; i < facetNames.length; i++) { - artifactFile = string.concat(artifactsPath, facetNames[i], "Facet.sol/", facetNames[i], "Facet.json"); - outputPathAndName = string.concat(pathToOutput, "/I", facetNames[i], "Facet.sol"); - interfaceName = string.concat("I", facetNames[i], "Facet"); - inputs[2] = artifactFile; - inputs[4] = outputPathAndName; - inputs[6] = interfaceName; - bytes memory res = vm.ffi(inputs); - } - - console2.log("Number of facets: ", facetNames.length); - } -} diff --git a/script/deployment/ReplaceDiamondCut.s.sol b/script/deployment/ReplaceDiamondCut.s.sol deleted file mode 100644 index cb5b3549..00000000 --- a/script/deployment/ReplaceDiamondCut.s.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import "script/utils/DeploymentHelpers.sol"; - -import { INayms, IDiamondCut } from "src/diamonds/nayms/INayms.sol"; -import { PhasedDiamondCutFacet } from "src/diamonds/shared/facets/PhasedDiamondCutFacet.sol"; - -contract ReplaceDiamondCut is DeploymentHelpers { - function run() public { - INayms nayms = INayms(getDiamondAddressFromFile()); - - // Replace diamondCut() with the two phase diamondCut() - vm.startBroadcast(msg.sender); - address phasedDiamondCutFacet = address(new PhasedDiamondCutFacet()); - - IDiamondCut.FacetCut[] memory cut; - cut = new IDiamondCut.FacetCut[](1); - - bytes4[] memory f0 = new bytes4[](1); - f0[0] = IDiamondCut.diamondCut.selector; - cut[0] = IDiamondCut.FacetCut({ facetAddress: address(phasedDiamondCutFacet), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: f0 }); - - // replace the diamondCut() with the 2-phase diamondCut() - nayms.diamondCut(cut, address(0), ""); - vm.stopBroadcast(); - } -} diff --git a/script/deployment/ReplaceOwnershipFacet.s.sol b/script/deployment/ReplaceOwnershipFacet.s.sol deleted file mode 100644 index 4ae1f744..00000000 --- a/script/deployment/ReplaceOwnershipFacet.s.sol +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import "script/utils/DeploymentHelpers.sol"; - -import { IERC173 } from "src/diamonds/shared/interfaces/IERC173.sol"; -import { NaymsOwnershipFacet } from "src/diamonds/shared/facets/NaymsOwnershipFacet.sol"; - -contract ReplaceOwnershipFacet is DeploymentHelpers { - function run() public returns (bytes32 cutHash) { - INayms nayms = INayms(getDiamondAddressFromFile()); - - vm.startBroadcast(msg.sender); - address addressWithUpgrade = address(new NaymsOwnershipFacet()); - - IDiamondCut.FacetCut[] memory cut; - cut = new IDiamondCut.FacetCut[](1); - - bytes4[] memory f0 = new bytes4[](1); - f0[0] = IERC173.transferOwnership.selector; - cut[0] = IDiamondCut.FacetCut({ facetAddress: address(addressWithUpgrade), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: f0 }); - - cutHash = keccak256(abi.encode(cut)); - if (nayms.getUpgrade(cutHash) > block.timestamp) { - nayms.diamondCut(cut, address(0), ""); - } else { - console2.log("Upgrade not allowed - upgrade not registered or upgrade time has passed"); - } - - vm.stopBroadcast(); - } -} diff --git a/script/deployment/S01DeployContract.s.sol b/script/deployment/S01DeployContract.s.sol deleted file mode 100644 index f05ec538..00000000 --- a/script/deployment/S01DeployContract.s.sol +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { IDiamondCut } from "src/diamonds/nayms/INayms.sol"; -import "script/utils/DeploymentHelpers.sol"; - -/// @dev Deploy a single contract and calculate the upgradeHash to replace methods in the diamond. -/// Returns an upgradeHash to replace methods in the diamond. These method(s) are from a single facet. -/// note The upgradeHash returned here is only correct for upgrading a single facet, and assuming all methods are `replaced`. If we were to add and/or remove methods, we would need to add them to the `cut` array. - -contract S01DeployContract is DeploymentHelpers { - function run(string calldata contractName) external returns (IDiamondCut.FacetCut[] memory cut, bytes32 upgradeHash, bytes32 upgradeHashOld) { - address deployer = msg.sender; - vm.label(deployer, "S01DeployContract deployer"); - vm.startBroadcast(deployer); - // Deploy contract based on the contract name from its artifact file. - address contractAddress = deployContract(contractName); - vm.stopBroadcast(); - - vm.label(contractAddress, string.concat("S01DeployContract ", contractName)); - console2.log(StdStyle.green("Deployed contract"), StdStyle.yellow(contractName), StdStyle.green("at address"), StdStyle.yellow(vm.toString(contractAddress))); - - // Get upgradeHash if we were to upgrade and replace matching functions. - - cut = new IDiamondCut.FacetCut[](1); - - // Get all function selectors from the forge artifacts for this contract. - bytes4[] memory functionSelectors = generateSelectors(contractName); - - cut[0] = IDiamondCut.FacetCut({ facetAddress: contractAddress, action: IDiamondCut.FacetCutAction.Replace, functionSelectors: functionSelectors }); - - upgradeHashOld = keccak256(abi.encode(cut)); // note old method of calculating upgrade hash by hashing only the cut struct - upgradeHash = keccak256(abi.encode(cut, address(0), "")); - console2.log(StdStyle.blue("Calculated upgradeHashOld (hashing `cut` struct ONLY): "), StdStyle.yellow(vm.toString(upgradeHashOld))); - console2.log(StdStyle.blue("Calculated upgradeHash (hashing all three parameters of `diamondCut()`): "), StdStyle.yellow(vm.toString(upgradeHash))); - } -} diff --git a/script/deployment/S02ScheduleUpgrade.s.sol b/script/deployment/S02ScheduleUpgrade.s.sol deleted file mode 100644 index 07cf1a90..00000000 --- a/script/deployment/S02ScheduleUpgrade.s.sol +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import "script/utils/DeploymentHelpers.sol"; - -contract S02ScheduleUpgrade is DeploymentHelpers { - function run(address _systemAdminAddress, bytes32 upgradeHash) external { - INayms nayms = INayms(getDiamondAddressFromFile()); - - vm.startBroadcast(_systemAdminAddress); - nayms.createUpgrade(upgradeHash); - vm.stopBroadcast(); - } -} diff --git a/script/deployment/S03UpgradeDiamond.s.sol b/script/deployment/S03UpgradeDiamond.s.sol deleted file mode 100644 index 76e832f9..00000000 --- a/script/deployment/S03UpgradeDiamond.s.sol +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/// ------------------------------------------------------------------------------------------------------------ -/// -/// NOTE: this file is auto-generated by prep-upgrade.js, please DO NOT modify it directly. Unless you want to :) -/// -/// ------------------------------------------------------------------------------------------------------------ - -import { IDiamondCut } from "src/diamonds/nayms/INayms.sol"; -import "script/utils/DeploymentHelpers.sol"; - -contract S03UpgradeDiamond is DeploymentHelpers { - using stdJson for string; - - function run(address _ownerAddress) external { - INayms nayms = INayms(getDiamondAddressFromFile()); - - if (_ownerAddress == address(0)) { - _ownerAddress = nayms.owner(); - } - - string memory path = "broadcast/S01DeployContract.s.sol/31337/run-latest.json"; - string memory json = vm.readFile(path); - bytes memory rawTxReturn = json.parseRaw(".returns.cut"); - TxReturn memory txReturn = abi.decode(rawTxReturn, (TxReturn)); - assertEq(txReturn.internalType, "struct IDiamondCut.FacetCut[]", "not the correct cut struct type"); - - IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](1); - - bytes4[] memory f0 = new bytes4[](1); - f0[0] = 0x1f931c1c; - cut[0] = IDiamondCut.FacetCut({facetAddress: 0x54405B827d4E17C92AAeaD617d89b53e67a1b391, action: IDiamondCut.FacetCutAction.Replace, functionSelectors: f0}); - - vm.startBroadcast(_ownerAddress); - nayms.diamondCut(cut, address(0), new bytes(0)); - vm.stopBroadcast(); - } -} diff --git a/script/deployment/SmartDeploy.s.sol b/script/deployment/SmartDeploy.s.sol deleted file mode 100644 index 59ef5ce7..00000000 --- a/script/deployment/SmartDeploy.s.sol +++ /dev/null @@ -1,107 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import "../utils/DeploymentHelpers.sol"; - -contract SmartDeploy is DeploymentHelpers { - function smartDeploy( - bool deployNewDiamond, - address _owner, - address _systemAdmin, - bool initNewDiamond, - FacetDeploymentAction facetDeploymentAction, - string[] memory facetsToCutIn, - bytes32 salt - ) - external - returns ( - // string[] memory facetsToCutIn - address diamondAddress, - address initDiamondAddress, - IDiamondCut.FacetCut[] memory cut, - bytes32 upgradeHash - ) - { - vm.startBroadcast(msg.sender); - - (diamondAddress, initDiamondAddress, cut, upgradeHash) = smartDeployment( - deployNewDiamond, - _owner, - _systemAdmin, - initNewDiamond, - facetDeploymentAction, - facetsToCutIn, - salt - ); - - vm.stopBroadcast(); - } - - function smartDeploy( - bool deployNewDiamond, - address _owner, - address _systemAdmin, - address initAddress, - FacetDeploymentAction facetDeploymentAction, - string[] memory facetsToCutIn, - bytes32 salt - ) - external - returns ( - // string[] memory facetsToCutIn - address diamondAddress, - address initDiamondAddress, - IDiamondCut.FacetCut[] memory cut, - bytes32 upgradeHash - ) - { - vm.startBroadcast(msg.sender); - - (diamondAddress, initDiamondAddress, cut, upgradeHash) = smartDeployment(deployNewDiamond, _owner, _systemAdmin, initAddress, facetDeploymentAction, facetsToCutIn, salt); - - vm.stopBroadcast(); - } - - function scheduleAndUpgradeDiamond() external { - // 1. deploys new facets - // 2. schedules upgrade - // 3. upgrade - INayms nayms = INayms(getDiamondAddressFromFile()); - - string[] memory facetsToCutIn; - vm.startBroadcast(msg.sender); - IDiamondCut.FacetCut[] memory cut = facetDeploymentAndCut(getDiamondAddressFromFile(), FacetDeploymentAction.UpgradeFacetsWithChangesOnly, facetsToCutIn); - bytes32 upgradeHash = keccak256(abi.encode(cut, address(0), new bytes(0))); - if (upgradeHash == 0xc597f3eb22d11c46f626cd856bd65e9127b04623d83e442686776a2e3b670bbf) { - console2.log("There are no facets to upgrade. This hash is the keccak256 hash of an empty IDiamondCut.FacetCut[]"); - } else { - nayms.createUpgrade(upgradeHash); - nayms.diamondCut(cut, address(0), new bytes(0)); - } - vm.stopBroadcast(); - } - - function schedule(bytes32 upgradeHash) external { - INayms nayms = INayms(getDiamondAddressFromFile()); - vm.startBroadcast(msg.sender); - nayms.createUpgrade(upgradeHash); - vm.stopBroadcast(); - } - - function hash( - bool deployNewDiamond, - address _owner, - address _systemAdmin, - bool initNewDiamond, - FacetDeploymentAction facetDeploymentAction, - string[] memory facetsToCutIn, - bytes32 salt - ) external returns (bytes32 upgradeHash, IDiamondCut.FacetCut[] memory cut) { - vm.startBroadcast(msg.sender); - - address initDiamondAddress; - (upgradeHash, cut, initDiamondAddress) = initUpgradeHash(deployNewDiamond, _owner, _systemAdmin, initNewDiamond, facetDeploymentAction, facetsToCutIn, salt); - - vm.stopBroadcast(); - } -} diff --git a/script/gemforge/deploy.js b/script/gemforge/deploy.js new file mode 100755 index 00000000..ddd0a872 --- /dev/null +++ b/script/gemforge/deploy.js @@ -0,0 +1,96 @@ +#!/usr/bin/env node + +const chalk = require("chalk"); +const path = require("path"); +const fs = require("fs"); +const rootFolder = path.join(__dirname, "..", ".."); +const { loadTarget, calculateUpgradeId, assertUpgradeIdIsEnabled, enableUpgradeViaGovernance } = require("./utils"); + +const _showTargetInfo = async (targetId) => { + const { networkId, network, walletId, proxyAddress, signer } = loadTarget(targetId); + console.log(`Target: ${targetId}`); + console.log(`Network: ${networkId} - ${network.rpcUrl}`); + console.log(`Wallet: ${walletId}`); + console.log(`System Admin: ${await signer.getAddress()}`); + console.log(`\nDiamond Proxy: ${chalk.green(proxyAddress)}\n`); +}; + +const tellUserToEnableUpgrade = async (targetId, cutFile) => { + const upgradeId = await calculateUpgradeId(cutFile); + + console.log(`\nUpgrade id: ${chalk.green(upgradeId)}\n`); + + if (targetId === "mainnet") { + console.log(`Please log into the MPC and enable this upgrade!`); + } else { + console.log(`Please run the next upgrade step to complete the upgrade.`); + } +}; + +const assertThatUpgradeIsEnabled = async (targetId, cutFile) => { + const upgradeId = await calculateUpgradeId(cutFile); + + await assertUpgradeIdIsEnabled(targetId, upgradeId); +}; + +(async () => { + const execa = await import("execa"); + const $ = execa.$({ + cwd: rootFolder, + stdio: "inherit", + shell: true, + env: { + ...process.env, + }, + }); + + const targetArg = process.argv[2]; + + if (!targetArg) { + throw new Error(`Please specify a target!`); + } + + console.log(`Deploying ${targetArg}`); + + const cutFile = path.join(rootFolder, ".gemforge/cut.json"); + + _showTargetInfo(targetArg); + + switch (process.argv[3]) { + case "--fresh": { + console.log(`Fresh...`); + await $`yarn gemforge deploy ${targetArg} -n`; + break; + } + case "--upgrade-start": { + console.log(`Upgrade step 1...`); + if (fs.existsSync(cutFile)) { + fs.unlinkSync(cutFile); + } + await $`yarn gemforge deploy ${targetArg} --pause-cut-to-file ${cutFile}`; + if (!fs.existsSync(cutFile)) { + console.log(`No upgrade necesary!`); + } else { + await tellUserToEnableUpgrade(targetArg, cutFile); + } + break; + } + case "--upgrade-finish": { + console.log(`Upgrade step 2...`); + if (!fs.existsSync(cutFile)) { + throw new Error(`Cut JSON file not found - please run the first upgrade step first!`); + } + if (targetArg !== "mainnet" && targetArg !== "mainnetFork") { + await enableUpgradeViaGovernance(targetArg, cutFile); + } + await assertThatUpgradeIsEnabled(targetArg, cutFile); + await $`yarn gemforge deploy ${targetArg} --resume-cut-from-file ${cutFile}`; + break; + } + default: { + throw new Error("Expecting one of: --fresh, --upgrade-start, --upgrade-finish"); + } + } + + console.log(`Done!`); +})(); diff --git a/script/gemforge/utils/index.js b/script/gemforge/utils/index.js new file mode 100644 index 00000000..8a06e92e --- /dev/null +++ b/script/gemforge/utils/index.js @@ -0,0 +1,52 @@ +const path = require("path"); +const rootFolder = path.join(__dirname, "..", "..", ".."); + +const ethers = require("ethers"); +const config = require(path.join(rootFolder, "gemforge.config.cjs")); +const deployments = require(path.join(rootFolder, "gemforge.deployments.json")); +const { abi } = require(path.join(rootFolder, "forge-artifacts/IDiamondProxy.sol/IDiamondProxy.json")); + +const loadTarget = (exports.loadTarget = (targetId) => { + const networkId = config.targets[targetId].network; + const network = config.networks[networkId]; + const walletId = config.targets[targetId].wallet; + const wallet = config.wallets[walletId]; + + const proxyAddress = deployments[targetId]?.contracts.find((a) => a.name === "DiamondProxy")?.onChain.address; + + const provider = new ethers.providers.JsonRpcProvider(network.rpcUrl); + const signer = ethers.Wallet.fromMnemonic(wallet.config.words).connect(provider); + const contract = proxyAddress ? new ethers.Contract(proxyAddress, abi, signer) : null; + + return { networkId, network, walletId, wallet, proxyAddress, signer, contract }; +}); + +exports.calculateUpgradeId = async (cutFile) => { + const cutData = require(cutFile); + const encodedData = ethers.utils.defaultAbiCoder.encode( + ["tuple(address facetAddress, uint8 action, bytes4[] functionSelectors)[]", "address", "bytes"], + [cutData.cuts, cutData.initContractAddress, cutData.initData] + ); + return ethers.utils.keccak256(encodedData); +}; + +exports.enableUpgradeViaGovernance = async (targetId, cutFile) => { + const { contract } = loadTarget(targetId); + + const upgradeId = await exports.calculateUpgradeId(cutFile); + + console.log(`Enabling upgrade in contract, upgrade id: ${upgradeId}`); + + const tx = await contract.createUpgrade(upgradeId); + console.log(`Transaction hash: ${tx.hash}`); + await tx.wait(); + console.log("Transaction mined!"); +}; + +exports.assertUpgradeIdIsEnabled = async (targetId, upgradeId) => { + const { contract } = loadTarget(targetId); + const val = await contract.getUpgrade(upgradeId); + if (!val) { + throw new Error(`Upgrade not found!`); + } +}; diff --git a/script/gemforge/verify-on-etherscan.js b/script/gemforge/verify-on-etherscan.js new file mode 100755 index 00000000..dc00e6ad --- /dev/null +++ b/script/gemforge/verify-on-etherscan.js @@ -0,0 +1,41 @@ +#!/usr/bin/env node + +(async () => { + require("dotenv").config(); + const { $ } = await import("execa"); + + const deploymentInfo = require("../../gemforge.deployments.json"); + const gemforgeConfig = require("../../gemforge.config.cjs"); + + const target = process.env.GEMFORGE_DEPLOY_TARGET; + if (!target) { + throw new Error("GEMFORGE_DEPLOY_TARGET env var not set"); + } + + // skip for localhost and forks + if (target === "local" || /fork/i.test(target)) { + console.log("Skipping verification on", target); + return; + } + + console.log(`Verifying for target ${target} ...`); + + const verifierUrl = gemforgeConfig.networks?.[target]?.verifierUrl; + const verificationArg = verifierUrl ? `--verifier-url=${verifierUrl}` : "--verifier etherscan"; + + const contracts = deploymentInfo[target]?.contracts || []; + + for (const { name, onChain } of contracts) { + let args = "0x"; + + if (onChain.constructorArgs.length) { + args = (await $`cast abi-encode constructor(address) ${onChain.constructorArgs.join(" ")}`).stdout; + } + + console.log(`Verifying ${name} at ${onChain.address} with args ${args}`); + + await $`forge verify-contract ${onChain.address} ${name} --constructor-args ${args} --chain-id ${deploymentInfo[target].chainId} ${verificationArg} --etherscan-api-key ${process.env.ETHERSCAN_API_KEY} --watch`; + + console.log(`Verified!`); + } +})(); diff --git a/script/legacy/IAdminFacet-17276760.sol b/script/legacy/IAdminFacet-17276760.sol deleted file mode 100644 index 45736198..00000000 --- a/script/legacy/IAdminFacet-17276760.sol +++ /dev/null @@ -1,111 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/// @dev IAdminFacet used during mainnet block 17276760 - -struct PolicyCommissionsBasisPoints { - uint16 premiumCommissionNaymsLtdBP; - uint16 premiumCommissionNDFBP; - uint16 premiumCommissionSTMBP; -} - -struct TradingCommissionsBasisPoints { - uint16 tradingCommissionTotalBP; - uint16 tradingCommissionNaymsLtdBP; - uint16 tradingCommissionNDFBP; - uint16 tradingCommissionSTMBP; - uint16 tradingCommissionMakerBP; -} - -/** - * @title Administration - * @notice Exposes methods that require administrative priviledges - * @dev Use it to configure various core parameters - */ -interface IAdminFacet { - /** - * @notice Set `_newMax` as the max dividend denominations value. - * @param _newMax new value to be used. - */ - function setMaxDividendDenominations(uint8 _newMax) external; - - /** - * @notice Update policy commission basis points configuration. - * @param _policyCommissions policy commissions configuration to set - */ - function setPolicyCommissionsBasisPoints(PolicyCommissionsBasisPoints calldata _policyCommissions) external; - - /** - * @notice Update trading commission basis points configuration. - * @param _tradingCommissions trading commissions configuration to set - */ - function setTradingCommissionsBasisPoints(TradingCommissionsBasisPoints calldata _tradingCommissions) external; - - /** - * @notice Get the max dividend denominations value - * @return max dividend denominations - */ - function getMaxDividendDenominations() external view returns (uint8); - - /** - * @notice Is the specified tokenId an external ERC20 that is supported by the Nayms platform? - * @param _tokenId token address converted to bytes32 - * @return whether token issupported or not - */ - function isSupportedExternalToken(bytes32 _tokenId) external view returns (bool); - - /** - * @notice Add another token to the supported tokens list - * @param _tokenAddress address of the token to support - */ - function addSupportedExternalToken(address _tokenAddress) external; - - /** - * @notice Get the supported tokens list as an array - * @return array containing address of all supported tokens - */ - function getSupportedExternalTokens() external view returns (address[] memory); - - /** - * @notice Gets the System context ID. - * @return System Identifier - */ - function getSystemId() external pure returns (bytes32); - - /** - * @notice Check if object can be tokenized - * @param _objectId ID of the object - */ - function isObjectTokenizable(bytes32 _objectId) external returns (bool); - - /** - * @notice System Admin can lock a function - * @dev This toggles FunctionLockedStorage.lock to true - * @param functionSelector the bytes4 function selector - */ - function lockFunction(bytes4 functionSelector) external; - - /** - * @notice System Admin can unlock a function - * @dev This toggles FunctionLockedStorage.lock to false - * @param functionSelector the bytes4 function selector - */ - function unlockFunction(bytes4 functionSelector) external; - - /** - * @notice Check if a function has been locked by a system admin - * @dev This views FunctionLockedStorage.lock - * @param functionSelector the bytes4 function selector - */ - function isFunctionLocked(bytes4 functionSelector) external view returns (bool); - - /** - * @notice Lock all contract methods involving fund transfers - */ - function lockAllFundTransferFunctions() external; - - /** - * @notice Unlock all contract methods involving fund transfers - */ - function unlockAllFundTransferFunctions() external; -} diff --git a/script/legacy/IMarketFacet-17334000.sol b/script/legacy/IMarketFacet-17334000.sol deleted file mode 100644 index 799247a2..00000000 --- a/script/legacy/IMarketFacet-17334000.sol +++ /dev/null @@ -1,125 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/// @dev IMarketFacet at block 17334000, prior to fee updates - -struct MarketInfo { - bytes32 creator; - bytes32 sellToken; - uint256 sellAmount; - uint256 sellAmountInitial; - bytes32 buyToken; - uint256 buyAmount; - uint256 buyAmountInitial; - uint256 feeSchedule; - uint256 state; - uint256 rankNext; - uint256 rankPrev; -} - -struct TradingCommissions { - uint256 roughCommissionPaid; - uint256 commissionNaymsLtd; - uint256 commissionNDF; - uint256 commissionSTM; - uint256 commissionMaker; - uint256 totalCommissions; -} - -struct TradingCommissionsBasisPoints { - uint16 tradingCommissionTotalBP; - uint16 tradingCommissionNaymsLtdBP; - uint16 tradingCommissionNDFBP; - uint16 tradingCommissionSTMBP; - uint16 tradingCommissionMakerBP; -} - -/** - * @title Matching Market (inspired by MakerOTC: https://github.com/nayms/maker-otc/blob/master/contracts/matching_market.sol) - * @notice Trade entity tokens - * @dev This should only be called through an entity, never directly by an EOA - */ -interface IMarketFacet { - /** - * @notice Execute a limit offer. - * - * @param _sellToken Token to sell. - * @param _sellAmount Amount to sell. - * @param _buyToken Token to buy. - * @param _buyAmount Amount to buy. - * @return offerId_ returns >0 if a limit offer was created on the market because the offer couldn't be totally fulfilled immediately. In this case the return value is the created offer's id. - * @return buyTokenCommissionsPaid_ The amount of the buy token paid as commissions on this particular order. - * @return sellTokenCommissionsPaid_ The amount of the sell token paid as commissions on this particular order. - */ - function executeLimitOffer( - bytes32 _sellToken, - uint256 _sellAmount, - bytes32 _buyToken, - uint256 _buyAmount - ) - external - returns ( - uint256 offerId_, - uint256 buyTokenCommissionsPaid_, - uint256 sellTokenCommissionsPaid_ - ); - - /** - * @notice Cancel offer #`_offerId`. This will cancel the offer so that it's no longer active. - * - * @dev This function can be frontrun: In the scenario where a user wants to cancel an unfavorable market offer, an attacker can potentially monitor and identify - * that the user has called this method, determine that filling this market offer is profitable, and as a result call executeLimitOffer with a higher gas price to have - * their transaction filled before the user can have cancelOffer filled. The most ideal situation for the user is to not have placed the unfavorable market offer - * in the first place since an attacker can always monitor our marketplace and potentially identify profitable market offers. Our UI will aide users in not placing - * market offers that are obviously unfavorable to the user and/or seem like mistake orders. In the event that a user needs to cancel an offer, it is recommended to - * use Flashbots in order to privately send your transaction so an attack cannot be triggered from monitoring the mempool for calls to cancelOffer. A user is recommended - * to change their RPC endpoint to point to https://rpc.flashbots.net when calling cancelOffer. We will add additional documentation to aide our users in this process. - * More information on using Flashbots: https://docs.flashbots.net/flashbots-protect/rpc/quick-start/ - * - * @param _offerId offer ID - */ - function cancelOffer(uint256 _offerId) external; - - /** - * @notice Get current best offer for given token pair. - * - * @dev This means finding the highest sellToken-per-buyToken price, i.e. price = sellToken / buyToken - * - * @return offerId, or 0 if no current best is available. - */ - function getBestOfferId(bytes32 _sellToken, bytes32 _buyToken) external view returns (uint256); - - /** - * @dev Get last created offer. - * - * @return offer id. - */ - function getLastOfferId() external view returns (uint256); - - /** - * @dev Get the details of the offer #`_offerId` - * @param _offerId ID of a particular offer - * @return _offerState details of the offer - */ - function getOffer(uint256 _offerId) external view returns (MarketInfo memory _offerState); - - /** - * @dev Check if the offer #`_offerId` is active or not. - * @param _offerId ID of a particular offer - * @return active or not - */ - function isActiveOffer(uint256 _offerId) external view returns (bool); - - /** - * @dev Calculate the trading commissions based on a buy amount. - * @param buyAmount The amount that the commissions payments are calculated from. - * @return tc TradingCommissions struct with metadata regarding the trade commission payment amounts. - */ - function calculateTradingCommissions(uint256 buyAmount) external view returns (TradingCommissions memory tc); - - /** - * @notice Get the marketplace's trading commissions basis points. - * @return bp - TradingCommissionsBasisPoints struct containing the individual basis points set for each marketplace commission receiver. - */ - function getTradingCommissionsBasisPoints() external view returns (TradingCommissionsBasisPoints memory bp); -} diff --git a/script/utils/DeploymentHelpers.sol b/script/utils/DeploymentHelpers.sol deleted file mode 100644 index 5a5a662a..00000000 --- a/script/utils/DeploymentHelpers.sol +++ /dev/null @@ -1,632 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import "forge-std/Test.sol"; -import { strings } from "lib/solidity-stringutils/src/strings.sol"; -import "./LibGeneratedNaymsFacetHelpers.sol"; -import { INayms, IDiamondCut, IDiamondLoupe } from "src/diamonds/nayms/INayms.sol"; -import { Create3Deployer } from "src/utils/Create3Deployer.sol"; - -import { PhasedDiamondCutFacet } from "src/diamonds/shared/facets/PhasedDiamondCutFacet.sol"; - -// solhint-disable no-empty-blocks -// solhint-disable state-visibility -// solhint-disable quotes -// solhint-disable no-console - -/// @notice helper methods to deploy a diamond, - -interface IInitDiamond { - function initialize() external; -} - -contract DeploymentHelpers is Test { - using strings for *; - using stdStorage for StdStorage; - - uint256[] SUPPORTED_CHAINS = [1, 5, 31337, 11155111]; - - string public constant artifactsPath = "forge-artifacts/"; - // File that is being parsed for the diamond address. If we are deploying a new diamond, then the address will be overwritten here. - string public deployFile = "deployedAddresses.json"; - - string public keyToReadDiamondAddress = string.concat(".", vm.toString(block.chainid)); - - mapping(address => string) newFacetNames; - address internal sDiamondAddress; - - IDiamondCut.FacetCut[] public cutS; - - bytes4[] public replaceSelectors; - bytes4[] public addSelectors; - bytes4[] public removeSelectors; - - enum FacetDeploymentAction { - DeployAllFacets, - UpgradeFacetsWithChangesOnly, - UpgradeFacetsListedOnly - } - - // return array of function selectors for given facet name - function generateSelectors(string memory _facetName) internal returns (bytes4[] memory selectors) { - //get string of contract methods - string[] memory cmd = new string[](4); - cmd[0] = "forge"; - cmd[1] = "inspect"; - cmd[2] = _facetName; - cmd[3] = "methods"; - bytes memory res = vm.ffi(cmd); - string memory st = string(res); - - // extract function signatures and take first 4 bytes of keccak - strings.slice memory s = st.toSlice(); - strings.slice memory delim = ":".toSlice(); - strings.slice memory delim2 = ",".toSlice(); - selectors = new bytes4[]((s.count(delim))); - - for (uint256 i = 0; i < selectors.length; i++) { - s.split('"'.toSlice()); - selectors[i] = bytes4(s.split(delim).until('"'.toSlice()).keccak()); - s.split(delim2); - } - return selectors; - } - - function removeFromArray(uint256 index) public { - // console2.log(string.concat("removeFromArray index: ", vm.toString(index), ". removeSelectors.length: ", vm.toString(removeSelectors.length))); - require(removeSelectors.length > index, "Out of bounds"); - // move all elements to the left, starting from the `index + 1` - for (uint256 i = index; i < removeSelectors.length - 1; i++) { - removeSelectors[i] = removeSelectors[i + 1]; - } - removeSelectors.pop(); // delete the last item - } - - function getDiamondAddressFromFile() internal view returns (address diamondAddress) { - // Read in current diamond address - string memory deployData = vm.readFile(deployFile); - - bytes memory parsed = vm.parseJson(deployData, keyToReadDiamondAddress); - diamondAddress = abi.decode(parsed, (address)); - } - - // true: deploys a new diamond, writes to deployFile - // false: reads deployFile - function diamondDeployment( - bool deployNewDiamond, - address owner, - address systemAdmin, - bytes32 salt - ) public returns (address diamondAddress) { - if (deployNewDiamond) { - if (salt != 0) { - // deterministically deploy diamond - Create3Deployer create3 = new Create3Deployer(); - - console2.log("Deterministic contract address", create3.getDeployed(salt)); - diamondAddress = create3.deployContract(salt, abi.encodePacked(type(Nayms).creationCode, abi.encode(owner, systemAdmin)), 0); - } else { - diamondAddress = address(new Nayms(owner, systemAdmin)); - } - - vm.label(address(diamondAddress), "New Nayms Diamond"); - - // Output diamond address - - // If key exists, then replace value. - // Otherwise, add a new row. - try vm.parseJson(deployFile, keyToReadDiamondAddress) { - vm.writeJson(vm.toString(address(diamondAddress)), deployFile, keyToReadDiamondAddress); - } catch { - string memory json = vm.readFile(deployFile); - uint256 numOfChainIds = SUPPORTED_CHAINS.length; - uint256 chainId; - for (uint256 i; i < numOfChainIds; i++) { - chainId = SUPPORTED_CHAINS[i]; - try vm.parseJsonAddress(json, string.concat(".", vm.toString(chainId))) { - vm.serializeAddress("key", vm.toString(chainId), vm.parseJsonAddress(json, string.concat(".", vm.toString(chainId)))); - } catch {} - } - string memory addRow = vm.serializeAddress("key", vm.toString(block.chainid), diamondAddress); - vm.writeJson(addRow, deployFile); - } - } else { - // Read in current diamond address - diamondAddress = getDiamondAddressFromFile(); - - vm.label(address(diamondAddress), "Same Nayms Diamond"); - } - - // store diamond address to be used later to create output - sDiamondAddress = diamondAddress; - } - - function findAndReplace(bytes memory res, string memory find) public view returns (string[] memory parts) { - string memory start = string(res); - strings.slice memory s = start.toSlice(); - string memory d = find; - strings.slice memory delim = d.toSlice(); - s.count(delim); - parts = new string[](s.count(delim) + 1); - for (uint256 i = 0; i < parts.length; i++) { - parts[i] = s.split(delim).toString(); - } - } - - function findAndReplaceToString(bytes memory res, string memory find) public view returns (string memory whole) { - string memory start = string(res); - strings.slice memory s = start.toSlice(); - string memory d = find; - strings.slice memory delim = d.toSlice(); - s.count(delim); - string[] memory parts = new string[](s.count(delim) + 1); - - for (uint256 i = 0; i < parts.length; i++) { - parts[i] = s.split(delim).toString(); - } - } - - function replaceNewLineWithComma(bytes memory res) public view returns (string[] memory parts) { - string memory start = string(res); - strings.slice memory s = start.toSlice(); - string memory d = "\n"; - strings.slice memory delim = d.toSlice(); - s.count(delim); - parts = new string[](s.count(delim) + 1); - for (uint256 i = 0; i < parts.length; i++) { - parts[i] = s.split(delim).toString(); - } - } - - function deployContract(string memory contractName) public returns (address contractAddress) { - string memory artifactFile = string.concat(artifactsPath, contractName, ".sol/", contractName, ".json"); - - contractAddress = deployCode(artifactFile); - } - - function deploySelectFacet(string memory facetName) public returns (address facetAddress) { - string memory artifactFile = string.concat(artifactsPath, facetName, "Facet.sol/", facetName, "Facet.json"); - - facetAddress = deployCode(artifactFile); - } - - /** - * @notice Compares the bytecode in the artifact to the matching onchain facet bytecode . - * @dev This method returns true for matching bytecode. - */ - function compareBytecode(address diamondAddress, string memory facetName) public returns (bool bytecodeMatchFlag) { - // read the newly compiled artifact file for the facet - string memory artifactFile = string.concat(artifactsPath, facetName, "Facet.sol/", facetName, "Facet.json"); - string memory artifactData = vm.readFile(artifactFile); - - bytes memory bytecode = vm.parseJson(artifactData, ".deployedBytecode.object"); - bytes memory bytecodeDecoded = abi.decode(bytecode, (bytes)); - - bytes4[] memory functionSignatures = generateSelectors(string.concat(facetName, "Facet")); - uint256 numberOfFunctionSignaturesFromArtifact = functionSignatures.length; - // get first non zero address - address targetFacetAddress; - for (uint256 i; i < numberOfFunctionSignaturesFromArtifact; i++) { - targetFacetAddress = IDiamondLoupe(diamondAddress).facetAddress(functionSignatures[i]); - if (targetFacetAddress != address(0)) { - break; - } - } - - bytes memory targetFacetBytecode = targetFacetAddress.code; - bytecodeMatchFlag = checkEq0(targetFacetBytecode, bytecodeDecoded); - } - - /** - * @notice Deploys a new facet by its name (calling deploySelectFacet()) and creates the Cut struct - */ - function deployFacetAndCreateFacetCut(string memory facetName) public returns (IDiamondCut.FacetCut memory cut) { - cut.facetAddress = deploySelectFacet(facetName); - - newFacetNames[cut.facetAddress] = facetName; - - cut.functionSelectors = generateSelectors(string.concat(facetName, "Facet")); - - cut.action = IDiamondCut.FacetCutAction.Add; - } - - /** - * @notice OLD WAY TO MAKE COVERAGE WORK. Deploys a new facet by its name (calling deploySelectFacet()) and creates the Cut struct - */ - - function deployFacetAndCreateFacetCutOLD(string memory facetName) public returns (IDiamondCut.FacetCut memory cut) { - cut.facetAddress = LibGeneratedNaymsFacetHelpers.deployNaymsFacetsByName(facetName); - - newFacetNames[cut.facetAddress] = facetName; - - cut.functionSelectors = generateSelectors(string.concat(facetName, "Facet")); - - cut.action = IDiamondCut.FacetCutAction.Add; - } - - /** - * @notice Pass in the facet deployment pattern that is desired. The various facet deployment patterns are explained in the FacetDeploymentAction enum. - */ - function facetDeploymentAndCut( - address diamondAddress, - FacetDeploymentAction facetDeploymentAction, - string[] memory facetsToCutIn - ) public returns (IDiamondCut.FacetCut[] memory cut) { - // If deployAllFacets == true, then deploy all of the facets currently defined - // If deployAllFacets == false, then only upgrade the facets listed in the array facetsToCutIn - // deployAllFacets == false - - string[] memory allFacetNames = LibGeneratedNaymsFacetHelpers.getFacetNames(); - uint256 numberOfFacets = allFacetNames.length; - - if (facetDeploymentAction == FacetDeploymentAction.DeployAllFacets) { - // loop through allFacetNames and deploy them - // note this purely adds all facet methods. - cut = new IDiamondCut.FacetCut[](numberOfFacets); - for (uint256 i; i < numberOfFacets; i++) { - // note: bring this back once coverage covers deployments from bytecode - // cut[i] = deployFacetAndCreateFacetCut(allFacetNames[i]); - cut[i] = deployFacetAndCreateFacetCutOLD(allFacetNames[i]); - } - } else if (facetDeploymentAction == FacetDeploymentAction.UpgradeFacetsWithChangesOnly) { - // V1: check if facet bytecode is different. If so, then deploy facet and add, remove, replace methods. - // loop through allFacetNames - // check if function sig exists - - for (uint256 i; i < numberOfFacets; i++) { - if (!compareBytecode(diamondAddress, allFacetNames[i])) { - dynamicFacetCutV1(diamondAddress, allFacetNames[i]); - } - } - - cut = cutS; - } else if (facetDeploymentAction == FacetDeploymentAction.UpgradeFacetsListedOnly) { - // Deploy the facets listed in facetsToCutIn - // require(facetsToCutIn.length > 0, "facetDeployment: did not provide any facet names to be manually deployed"); - - for (uint256 i; i < facetsToCutIn.length; i++) { - dynamicFacetCutV1(diamondAddress, facetsToCutIn[i]); - } - - cut = cutS; - } - } - - /// Adds any new function sigs. Replaces any functions with the same sig. Removes any functions that don't exist in the new facet. - /// @notice V1 of dynamic facet cuts. If the facet has a new method, then the facet will be newly deployed and cut in - // If the facet has a method with the same function sig - - /** - * @dev If the facet only has methods with the same function sig (no new function sigs), then this method is not smart enough - * to know whether or not there's a change in the function itself to warrent a new deployment / diamond cut. - * This extra smartness will come in V2 of dynamicFacetCut() :) - * @param diamondAddress The address of the diamond to be upgraded. note: The diamond must have the standard diamond loupe functions - * @param facetName Name of the facet to cut in - */ - function dynamicFacetCutV1(address diamondAddress, string memory facetName) public returns (IDiamondCut.FacetCut[] memory cut) { - // if it already exists - replace - // if it doesn't exist in the old facet - add - // if it doesn't exist in the new facet and it doesn't exist in the old facet - remove - - uint256 replaceCount; - uint256 addCount; - uint256 removeCount; - - address oldFacetAddress; - - bytes4[] memory functionSelectors = generateSelectors(string.concat(facetName, "Facet")); - uint256 numFunctionSelectors = functionSelectors.length; - // REPLACE, ADD (remove is after REPLACE and ADD) - if (numFunctionSelectors > 0) { - for (uint256 i; i < numFunctionSelectors; ++i) { - // replace "old" method with "new" method - if (IDiamondLoupe(diamondAddress).facetAddress(functionSelectors[i]) != address(0)) { - replaceCount++; - - replaceSelectors.push(functionSelectors[i]); - - // assume the old facet address is the address with a matching function selector - oldFacetAddress = IDiamondLoupe(diamondAddress).facetAddress(functionSelectors[i]); - // add method if it doesn't exist in the old facet - } else if (IDiamondLoupe(diamondAddress).facetAddress(functionSelectors[i]) == address(0)) { - addCount++; - addSelectors.push(functionSelectors[i]); - } - } - } - - // REMOVE - // if there are selectors in the old facet that are not being replaced, then they should be removed, since they are not in the new facet - // from the list of selectors from the old facet, remove from the list the selectors that are being replaced. - uint256 numberOfSelectorsFromOldFacet; - // bytes4[] memory removeSelectors; - if (oldFacetAddress != address(0)) { - bytes4[] memory oldFacetSelectors = IDiamondLoupe(diamondAddress).facetFunctionSelectors(oldFacetAddress); - numberOfSelectorsFromOldFacet = oldFacetSelectors.length; - for (uint256 i; i < numberOfSelectorsFromOldFacet; i++) { - address facetAddress = IDiamondLoupe(diamondAddress).facetAddress(oldFacetSelectors[i]); - } - - // get list of selectors in "current" facet - removeSelectors = IDiamondLoupe(diamondAddress).facetFunctionSelectors(oldFacetAddress); - uint256 oldFacetCount = removeSelectors.length; - - uint256 numSelectorsRemovedFromFacet; - - for (uint256 k; k < oldFacetCount; k++) { - for (uint256 j; j < numFunctionSelectors; j++) { - // compare list of old selectors with list of new selectors, if any are the same, then remove from the list of old selectors (removeSelectors[]) - if (removeSelectors[k - numSelectorsRemovedFromFacet] == functionSelectors[j] && removeSelectors[k - numSelectorsRemovedFromFacet] != 0) { - removeFromArray(k - numSelectorsRemovedFromFacet); - numSelectorsRemovedFromFacet++; - break; - } - } - } - } - - removeCount = removeSelectors.length; - - // deploy a new facet if it's needed - address newFacetAddress; - - if (addCount != 0 || replaceCount != 0) { - newFacetAddress = deploySelectFacet(facetName); - - newFacetNames[newFacetAddress] = facetName; - } - - if (addCount > 0 && replaceCount > 0 && removeCount > 0) { - cut = new IDiamondCut.FacetCut[](3); - - cut[0] = IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: replaceSelectors }); - cut[1] = IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: addSelectors }); - cut[2] = IDiamondCut.FacetCut({ facetAddress: address(0), action: IDiamondCut.FacetCutAction.Remove, functionSelectors: removeSelectors }); - cutS.push(IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: replaceSelectors })); - cutS.push(IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: addSelectors })); - cutS.push(IDiamondCut.FacetCut({ facetAddress: address(0), action: IDiamondCut.FacetCutAction.Remove, functionSelectors: removeSelectors })); - } else if (addCount > 0 && replaceCount > 0) { - cut = new IDiamondCut.FacetCut[](2); - - cut[0] = IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: replaceSelectors }); - cut[1] = IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: addSelectors }); - cutS.push(IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: replaceSelectors })); - cutS.push(IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: addSelectors })); - } else { - cut = new IDiamondCut.FacetCut[](1); - if (addCount > 0) { - cut[0] = IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: addSelectors }); - cutS.push(IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: addSelectors })); - } else if (replaceCount > 0) { - cut[0] = IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: replaceSelectors }); - cutS.push(IDiamondCut.FacetCut({ facetAddress: address(newFacetAddress), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: replaceSelectors })); - } - } - - // clear out storage arrays. Otherwise, these storage arrays will retain the state from the first iteration of this method which is not desired for a subsequent call. - delete replaceSelectors; - delete addSelectors; - delete removeSelectors; - } - - function cutAndInit( - address diamondAddress, - IDiamondCut.FacetCut[] memory cut, - address initAddress - ) public { - if (initAddress != address(0)) { - IInitDiamond initDiamond = IInitDiamond(initAddress); - - IDiamondCut(diamondAddress).diamondCut(cut, address(initAddress), abi.encodeCall(initDiamond.initialize, ())); - } else { - IDiamondCut(diamondAddress).diamondCut(cut, address(0), ""); - } - } - - /** - * @notice This method ties everything together - * @param deployNewDiamond Flag: true: deploy a new diamond. false: use the current diamond. - * @param initNewDiamond Flag: true: deploy InitDiamond and initialize the diamond. false: does not deploy InitDiamond and does not call initialize. - * @param facetDeploymentAction DeployAllFacets - deploys all facets in the facets folder and cuts them in. - * UpgradeFacetsWithChangesOnly - looks at bytecode, if there's a difference, then will deploy a new facet, run through dynamic deployment - * UpgradeFacetsListedOnly - looks at facetsToCutIn and runs through dynamic deployment only on those facets - * @param facetsToCutIn List facets to manually cut in - * @return diamondAddress initDiamond, upgradeHash hash of the facet cuts - */ - function smartDeployment( - bool deployNewDiamond, - address _owner, - address _systemAdmin, - bool initNewDiamond, - FacetDeploymentAction facetDeploymentAction, - string[] memory facetsToCutIn, - bytes32 salt - ) - public - returns ( - address diamondAddress, - address initDiamondAddress, - IDiamondCut.FacetCut[] memory cut, - bytes32 upgradeHash - ) - { - // deploys new Nayms diamond, or gets the diamond address from file - diamondAddress = diamondDeployment(deployNewDiamond, _owner, _systemAdmin, salt); - - // deploys facets - cut = facetDeploymentAndCut(diamondAddress, facetDeploymentAction, facetsToCutIn); - - if (initNewDiamond) { - IInitDiamond initDiamond = IInitDiamond(LibGeneratedNaymsFacetHelpers.deployNaymsFacetsByName("InitDiamond")); - initDiamondAddress = address(initDiamond); - upgradeHash = keccak256(abi.encode(cut, initDiamondAddress, abi.encodeCall(initDiamond.initialize, ()))); - } else { - upgradeHash = keccak256(abi.encode(cut, address(0), "")); - } - console2.log(StdStyle.blue("upgradeHash: "), StdStyle.yellow(vm.toString(upgradeHash))); - debugDeployment(diamondAddress, facetsToCutIn, facetDeploymentAction); - - uint256 upgradeExpiry = INayms(diamondAddress).getUpgrade(upgradeHash); - if (upgradeExpiry >= block.timestamp) { - cutAndInit(diamondAddress, cut, initDiamondAddress); - } else { - console2.log(StdStyle.red("UPGRADE NOT PERFORMED"), StdStyle.blue("(but facets have been deployed and the upgrade hash is valid)")); - console2.log("Upgrade is not scheduled for this hash", vm.toString(upgradeHash)); - console2.log("Upgrade expiry time from getUpgrade()", vm.toString(upgradeExpiry)); - console2.log("Current block.timestamp for chainid", vm.toString(block.chainid), vm.toString(block.timestamp)); - console2.log("Use the upgrade hash given above to schedule an upgrade"); - } - } - - function smartDeployment( - bool deployNewDiamond, - address _owner, - address _systemAdmin, - address initAddress, - FacetDeploymentAction facetDeploymentAction, - string[] memory facetsToCutIn, - bytes32 salt - ) - public - returns ( - address diamondAddress, - address initDiamondAddress, - IDiamondCut.FacetCut[] memory cut, - bytes32 upgradeHash - ) - { - // deploys new Nayms diamond, or gets the diamond address from file - diamondAddress = diamondDeployment(deployNewDiamond, _owner, _systemAdmin, salt); - - // deploys facets - cut = facetDeploymentAndCut(diamondAddress, facetDeploymentAction, facetsToCutIn); - - if (initAddress != address(0)) { - IInitDiamond initDiamond = IInitDiamond(initAddress); - initDiamondAddress = address(initDiamond); - upgradeHash = keccak256(abi.encode(cut, initDiamondAddress, abi.encodeCall(initDiamond.initialize, ()))); - } else { - upgradeHash = keccak256(abi.encode(cut, address(0), "")); - } - console2.log(StdStyle.blue("upgradeHash: "), StdStyle.yellow(vm.toString(upgradeHash))); - debugDeployment(diamondAddress, facetsToCutIn, facetDeploymentAction); - - uint256 upgradeExpiry = INayms(diamondAddress).getUpgrade(upgradeHash); - if (upgradeExpiry >= block.timestamp) { - cutAndInit(diamondAddress, cut, initDiamondAddress); - } else { - console2.log(StdStyle.red("UPGRADE NOT PERFORMED"), StdStyle.blue("(but facets have been deployed and the upgrade hash is valid)")); - console2.log("Upgrade is not scheduled for this hash", vm.toString(upgradeHash)); - console2.log("Upgrade expiry time from getUpgrade()", vm.toString(upgradeExpiry)); - console2.log("Current block.timestamp for chainid", vm.toString(block.chainid), vm.toString(block.timestamp)); - console2.log("Use the upgrade hash given above to schedule an upgrade"); - } - } - - function initUpgradeHash( - bool deployNewDiamond, - address _owner, - address _systemAdmin, - bool initNewDiamond, - FacetDeploymentAction facetDeploymentAction, - string[] memory facetsToCutIn, - bytes32 salt - ) - internal - returns ( - bytes32 upgradeHash, - IDiamondCut.FacetCut[] memory cut, - address initDiamondAddress - ) - { - address diamondAddress = diamondDeployment(deployNewDiamond, _owner, _systemAdmin, salt); - if (diamondAddress == address(0)) { - return (upgradeHash, cut, initDiamondAddress); - } - - cut = facetDeploymentAndCut(diamondAddress, facetDeploymentAction, facetsToCutIn); - - bool initialize; - - try INayms(diamondAddress).isDiamondInitialized() returns (bool result) { - initialize = result; - } catch (bytes memory) { - // if the diamond does not have the isDiamondInitialized method, then check bool initNewDiamond - if (initNewDiamond) { - initialize = false; // if initialize == false then we will deploy InitDiamond and call initialize - } - } - if (!initialize) { - IInitDiamond initDiamond = IInitDiamond(LibGeneratedNaymsFacetHelpers.deployNaymsFacetsByName("InitDiamond")); - initDiamondAddress = address(initDiamond); - upgradeHash = keccak256(abi.encode(cut, initDiamondAddress, abi.encodeCall(initDiamond.initialize, ()))); - } else { - upgradeHash = keccak256(abi.encode(cut, address(0), "")); - } - - console2.log(StdStyle.blue("upgradeHash: "), StdStyle.yellow(vm.toString(upgradeHash))); - debugDeployment(diamondAddress, facetsToCutIn, facetDeploymentAction); - } - - function debugDeployment( - address diamondAddress, - string[] memory facetsToCutIn, - FacetDeploymentAction facetDeploymentAction - ) internal { - console2.log(StdStyle.underline("Upgrade stats:")); - - uint256 numFacets = cutS.length; - - console2.log(StdStyle.underline("Number of facets being added/removed/replaced:"), cutS.length); - - uint256 addCount; - uint256 replaceCount; - uint256 removeCount; - - uint256 totalAddCount; - uint256 totalReplaceCount; - uint256 totalRemoveCount; - - for (uint256 i; i < numFacets; i++) { - console2.log(string.concat(newFacetNames[cutS[i].facetAddress], " ", vm.toString(cutS[i].facetAddress))); - - if (cutS[i].action == IDiamondCut.FacetCutAction.Add) { - console2.log("Adding:"); - addCount++; - totalAddCount += cutS[i].functionSelectors.length; - } else if (cutS[i].action == IDiamondCut.FacetCutAction.Replace) { - console2.log("Replacing:"); - replaceCount++; - totalReplaceCount += cutS[i].functionSelectors.length; - } else if (cutS[i].action == IDiamondCut.FacetCutAction.Remove) { - console2.log("Removing:"); - removeCount++; - totalRemoveCount += cutS[i].functionSelectors.length; - } - - uint256 numSelectors = cutS[i].functionSelectors.length; - for (uint256 j; j < numSelectors; j++) { - console2.log(vm.toString(cutS[i].functionSelectors[j])); - } - } - - if (facetDeploymentAction == FacetDeploymentAction.UpgradeFacetsListedOnly) { - console2.log("Number of facets being added/removed/replaced:", facetsToCutIn.length); - } - - console2.log("Number of facets being added:", addCount); - console2.log("Number of facets being removed:", removeCount); - console2.log("Number of facets being replaced:", replaceCount); - - console2.log("Number of function selectors being added:", totalAddCount); - console2.log("Number of function selectors being removed:", totalRemoveCount); - console2.log("Number of function selectors being replaced:", totalReplaceCount); - - INayms nayms = INayms(diamondAddress); - console2.log("Contract owner:", nayms.owner()); - } - - function updateDeployOutputName(string memory outputName) public { - deployFile = outputName; - } -} diff --git a/slither.config.json b/slither.config.json index 6dc4d477..7a2f8302 100644 --- a/slither.config.json +++ b/slither.config.json @@ -4,13 +4,15 @@ "solc_remaps": [ "ds-test/=lib/ds-test/src/", "forge-std/=lib/forge-std/src/", - "@openzeppelin/=lib/ozv4/", + "@openzeppelin/=lib/oz/", "src/=./src/", "test/=./test/", "script/=./script/" ], - "detectors_to_exclude": "assembly,similar-names,naming-convention", + "detectors_to_exclude": "solc-version,assembly-usage,naming-convention,low-level-calls", "exclude_informational": false, "exclude_low": false, - "solc_disable_warnings": false -} \ No newline at end of file + "solc_disable_warnings": false, + "ignore_compile": true, + "sarif": "results.sarif" +} diff --git a/src/diamonds/nayms/AppStorage.sol b/src/diamonds/nayms/AppStorage.sol deleted file mode 100644 index bdc464b8..00000000 --- a/src/diamonds/nayms/AppStorage.sol +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/// @notice storage for nayms v3 decentralized insurance platform - -// solhint-disable no-global-import -import "./interfaces/FreeStructs.sol"; - -struct AppStorage { - // Has this diamond been initialized? - bool diamondInitialized; - //// EIP712 domain separator //// - uint256 initialChainId; - bytes32 initialDomainSeparator; - //// Reentrancy guard //// - uint256 reentrancyStatus; - //// NAYMS ERC20 TOKEN //// - string name; - mapping(address => mapping(address => uint256)) allowance; - uint256 totalSupply; - mapping(bytes32 => bool) internalToken; - mapping(address => uint256) balances; - //// Object //// - mapping(bytes32 => bool) existingObjects; // objectId => is an object? - mapping(bytes32 => bytes32) objectParent; // objectId => parentId - mapping(bytes32 => bytes32) objectDataHashes; - mapping(bytes32 => string) objectTokenSymbol; - mapping(bytes32 => string) objectTokenName; - mapping(bytes32 => address) objectTokenWrapper; - mapping(bytes32 => bool) existingEntities; // entityId => is an entity? - mapping(bytes32 => bool) existingSimplePolicies; // simplePolicyId => is a simple policy? - //// ENTITY //// - mapping(bytes32 => Entity) entities; // objectId => Entity struct - //// SIMPLE POLICY //// - mapping(bytes32 => SimplePolicy) simplePolicies; // objectId => SimplePolicy struct - //// External Tokens //// - mapping(address => bool) externalTokenSupported; - address[] supportedExternalTokens; - //// TokenizedObject //// - mapping(bytes32 => mapping(bytes32 => uint256)) tokenBalances; // tokenId => (ownerId => balance) - mapping(bytes32 => uint256) tokenSupply; // tokenId => Total Token Supply - //// Dividends //// - uint8 maxDividendDenominations; - mapping(bytes32 => bytes32[]) dividendDenominations; // object => tokenId of the dividend it allows - mapping(bytes32 => mapping(bytes32 => uint8)) dividendDenominationIndex; // entity ID => (token ID => index of dividend denomination) - mapping(bytes32 => mapping(uint8 => bytes32)) dividendDenominationAtIndex; // entity ID => (index of dividend denomination => token id) - mapping(bytes32 => mapping(bytes32 => uint256)) totalDividends; // token ID => (denomination ID => total dividend) - mapping(bytes32 => mapping(bytes32 => mapping(bytes32 => uint256))) withdrawnDividendPerOwner; // entity => (tokenId => (owner => total withdrawn dividend)) NOT per share!!! this is TOTAL - //// ACL Configuration//// - mapping(bytes32 => mapping(bytes32 => bool)) groups; //role => (group => isRoleInGroup) - mapping(bytes32 => bytes32) canAssign; //role => Group that can assign/unassign that role - //// User Data //// - mapping(bytes32 => mapping(bytes32 => bytes32)) roles; // userId => (contextId => role) - //// MARKET //// - uint256 lastOfferId; - mapping(uint256 => MarketInfo) offers; // offer Id => MarketInfo struct - mapping(bytes32 => mapping(bytes32 => uint256)) bestOfferId; // sell token => buy token => best offer Id - mapping(bytes32 => mapping(bytes32 => uint256)) span; // sell token => buy token => span - address naymsToken; // represents the address key for this NAYMS token in AppStorage - bytes32 naymsTokenId; // represents the bytes32 key for this NAYMS token in AppStorage - /// Trading Commissions (all in basis points) /// - uint16 tradingCommissionTotalBP; // note DEPRECATED // the total amount that is deducted for trading commissions (BP) - // The total commission above is further divided as follows: - uint16 tradingCommissionNaymsLtdBP; // note DEPRECATED - uint16 tradingCommissionNDFBP; // note DEPRECATED - uint16 tradingCommissionSTMBP; // note DEPRECATED - uint16 tradingCommissionMakerBP; - // Premium Commissions - uint16 premiumCommissionNaymsLtdBP; // note DEPRECATED - uint16 premiumCommissionNDFBP; // note DEPRECATED - uint16 premiumCommissionSTMBP; // note DEPRECATED - // A policy can pay out additional commissions on premiums to entities having a variety of roles on the policy - mapping(bytes32 => mapping(bytes32 => uint256)) lockedBalances; // keep track of token balance that is locked, ownerId => tokenId => lockedAmount - /// Simple two phase upgrade scheme - mapping(bytes32 => uint256) upgradeScheduled; // id of the upgrade => the time that the upgrade is valid until. - uint256 upgradeExpiration; // the period of time that an upgrade is valid until. - uint256 sysAdmins; // counter for the number of sys admin accounts currently assigned - mapping(address => bytes32) objectTokenWrapperId; // reverse mapping token wrapper address => object ID - mapping(string => bytes32) tokenSymbolObjectId; // reverse mapping token symbol => object ID, to ensure symbol uniqueness - mapping(bytes32 => mapping(uint256 => FeeSchedule)) feeSchedules; // map entity ID to a fee schedule type and then to array of FeeReceivers (feeScheduleType (1-premium, 2-trading, n-others)) -} - -struct FunctionLockedStorage { - mapping(bytes4 => bool) locked; // function selector => is locked? -} - -library LibAppStorage { - bytes32 internal constant NAYMS_DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.nayms.storage"); - bytes32 internal constant FUNCTION_LOCK_STORAGE_POSITION = keccak256("diamond.function.lock.storage"); - - function diamondStorage() internal pure returns (AppStorage storage ds) { - bytes32 position = NAYMS_DIAMOND_STORAGE_POSITION; - assembly { - ds.slot := position - } - } - - function functionLockStorage() internal pure returns (FunctionLockedStorage storage ds) { - bytes32 position = FUNCTION_LOCK_STORAGE_POSITION; - assembly { - ds.slot := position - } - } -} diff --git a/src/diamonds/nayms/INayms.sol b/src/diamonds/nayms/INayms.sol deleted file mode 100644 index c8d1906c..00000000 --- a/src/diamonds/nayms/INayms.sol +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -// solhint-disable no-empty-blocks - -import { IDiamondCut } from "../shared/interfaces/IDiamondCut.sol"; -import { IDiamondLoupe } from "../shared/interfaces/IDiamondLoupe.sol"; -import { IERC165 } from "../shared/interfaces/IERC165.sol"; -import { IERC173 } from "../shared/interfaces/IERC173.sol"; - -import { IACLFacet } from "./interfaces/IACLFacet.sol"; -import { IUserFacet } from "./interfaces/IUserFacet.sol"; -import { IAdminFacet } from "./interfaces/IAdminFacet.sol"; -import { ISystemFacet } from "./interfaces/ISystemFacet.sol"; -import { INaymsTokenFacet } from "./interfaces/INaymsTokenFacet.sol"; -import { ITokenizedVaultFacet } from "./interfaces/ITokenizedVaultFacet.sol"; -import { ITokenizedVaultIOFacet } from "./interfaces/ITokenizedVaultIOFacet.sol"; -import { IMarketFacet } from "./interfaces/IMarketFacet.sol"; -import { IEntityFacet } from "./interfaces/IEntityFacet.sol"; -import { ISimplePolicyFacet } from "./interfaces/ISimplePolicyFacet.sol"; -import { IGovernanceFacet } from "./interfaces/IGovernanceFacet.sol"; - -/** - * @title Nayms Diamond - * @notice Everything is a part of one big diamond. - * @dev Every facet should be cut into this diamond. - */ -interface INayms is - IDiamondCut, - IDiamondLoupe, - IERC165, - IERC173, - IACLFacet, - IAdminFacet, - IUserFacet, - ISystemFacet, - INaymsTokenFacet, - ITokenizedVaultFacet, - ITokenizedVaultIOFacet, - IMarketFacet, - IEntityFacet, - ISimplePolicyFacet, - IGovernanceFacet -{ - -} diff --git a/src/diamonds/nayms/InitDiamond.sol b/src/diamonds/nayms/InitDiamond.sol deleted file mode 100644 index 0a5c8c68..00000000 --- a/src/diamonds/nayms/InitDiamond.sol +++ /dev/null @@ -1,94 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { AppStorage, LibAppStorage } from "./AppStorage.sol"; -import { LibHelpers } from "./libs/LibHelpers.sol"; -import { LibConstants } from "./libs/LibConstants.sol"; -import { LibAdmin } from "./libs/LibAdmin.sol"; -import { LibACL } from "./libs/LibACL.sol"; -import { LibDiamond } from "../shared/libs/LibDiamond.sol"; -import { LibEIP712 } from "src/diamonds/nayms/libs/LibEIP712.sol"; -import { IERC165 } from "../shared/interfaces/IERC165.sol"; -import { IDiamondCut } from "../shared/interfaces/IDiamondCut.sol"; -import { IDiamondLoupe } from "../shared/interfaces/IDiamondLoupe.sol"; -import { IERC173 } from "../shared/interfaces/IERC173.sol"; -import { IERC20 } from "../../erc20/IERC20.sol"; -import { IACLFacet } from "../nayms/interfaces/IACLFacet.sol"; -import { IAdminFacet } from "../nayms/interfaces/IAdminFacet.sol"; -import { IEntityFacet } from "../nayms/interfaces/IEntityFacet.sol"; -import { IMarketFacet } from "../nayms/interfaces/IMarketFacet.sol"; -import { INaymsTokenFacet } from "../nayms/interfaces/INaymsTokenFacet.sol"; -import { ISimplePolicyFacet } from "../nayms/interfaces/ISimplePolicyFacet.sol"; -import { ISystemFacet } from "../nayms/interfaces/ISystemFacet.sol"; -import { ITokenizedVaultFacet } from "../nayms/interfaces/ITokenizedVaultFacet.sol"; -import { ITokenizedVaultIOFacet } from "../nayms/interfaces/ITokenizedVaultIOFacet.sol"; -import { IUserFacet } from "../nayms/interfaces/IUserFacet.sol"; -import { IGovernanceFacet } from "../nayms/interfaces/IGovernanceFacet.sol"; -import { FeeSchedule } from "../nayms/interfaces/FreeStructs.sol"; - -error DiamondAlreadyInitialized(); - -contract InitDiamond { - event InitializeDiamond(address sender); - - function initialize() external { - AppStorage storage s = LibAppStorage.diamondStorage(); - if (s.diamondInitialized) { - revert DiamondAlreadyInitialized(); - } - - // ERC20 - s.name = "Nayms"; - s.totalSupply = 100_000_000e18; - s.balances[msg.sender] = s.totalSupply; - - // EIP712 domain separator - s.initialChainId = block.chainid; - s.initialDomainSeparator = LibEIP712._computeDomainSeparator(); - - // disallow creating an object with ID of 0 - s.existingObjects[0] = true; - - // Set Commissions (all are in basis points) - bytes32[] memory receiver = new bytes32[](1); - receiver[0] = LibHelpers._stringToBytes32(LibConstants.NAYMS_LTD_IDENTIFIER); - - uint16[] memory premiumBP = new uint16[](1); - premiumBP[0] = 300; - uint16[] memory tradingBP = new uint16[](1); - tradingBP[0] = 30; - uint16[] memory initSaleBP = new uint16[](1); - initSaleBP[0] = 100; - - s.feeSchedules[LibConstants.DEFAULT_FEE_SCHEDULE][LibConstants.FEE_TYPE_PREMIUM] = FeeSchedule({ receiver: receiver, basisPoints: premiumBP }); - s.feeSchedules[LibConstants.DEFAULT_FEE_SCHEDULE][LibConstants.FEE_TYPE_TRADING] = FeeSchedule({ receiver: receiver, basisPoints: tradingBP }); - s.feeSchedules[LibConstants.DEFAULT_FEE_SCHEDULE][LibConstants.FEE_TYPE_INITIAL_SALE] = FeeSchedule({ receiver: receiver, basisPoints: initSaleBP }); - - s.naymsTokenId = LibHelpers._getIdForAddress(address(this)); - s.naymsToken = address(this); - s.maxDividendDenominations = 1; - - // adding ERC165 data - LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - ds.supportedInterfaces[type(IERC165).interfaceId] = true; - ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true; - ds.supportedInterfaces[type(IDiamondLoupe).interfaceId] = true; - ds.supportedInterfaces[type(IERC173).interfaceId] = true; - ds.supportedInterfaces[type(IERC20).interfaceId] = true; - - ds.supportedInterfaces[type(IACLFacet).interfaceId] = true; - ds.supportedInterfaces[type(IAdminFacet).interfaceId] = true; - ds.supportedInterfaces[type(IEntityFacet).interfaceId] = true; - ds.supportedInterfaces[type(IMarketFacet).interfaceId] = true; - ds.supportedInterfaces[type(INaymsTokenFacet).interfaceId] = true; - ds.supportedInterfaces[type(ISimplePolicyFacet).interfaceId] = true; - ds.supportedInterfaces[type(ISystemFacet).interfaceId] = true; - ds.supportedInterfaces[type(ITokenizedVaultFacet).interfaceId] = true; - ds.supportedInterfaces[type(ITokenizedVaultIOFacet).interfaceId] = true; - ds.supportedInterfaces[type(IUserFacet).interfaceId] = true; - ds.supportedInterfaces[type(IGovernanceFacet).interfaceId] = true; - - s.diamondInitialized = true; - emit InitializeDiamond(msg.sender); - } -} diff --git a/src/diamonds/nayms/Nayms.sol b/src/diamonds/nayms/Nayms.sol deleted file mode 100644 index 027a9e02..00000000 --- a/src/diamonds/nayms/Nayms.sol +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/******************************************************************************\ -* Author: Nick Mudge (https://twitter.com/mudgen) -* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 -* -* Implementation of a diamond. -/******************************************************************************/ -import { LibDiamond } from "../shared/libs/LibDiamond.sol"; -import { PhasedDiamondCutFacet } from "../shared/facets/PhasedDiamondCutFacet.sol"; -import { DiamondLoupeFacet } from "../shared/facets/DiamondLoupeFacet.sol"; -import { NaymsOwnershipFacet } from "src/diamonds/shared/facets/NaymsOwnershipFacet.sol"; -import { ACLFacet } from "src/diamonds/nayms/facets/ACLFacet.sol"; -import { GovernanceFacet } from "src/diamonds/nayms/facets/GovernanceFacet.sol"; - -contract Nayms { - constructor(address _contractOwner, address _systemAdmin) payable { - LibDiamond.setContractOwner(_contractOwner); - LibDiamond.setRoleGroupsAndAssigners(); - LibDiamond.setSystemAdmin(_systemAdmin); // note: This method checks to make sure system admin is not the same address as the contract owner. - LibDiamond.setUpgradeExpiration(); - - LibDiamond.addDiamondFunctions( - address(new PhasedDiamondCutFacet()), - address(new DiamondLoupeFacet()), - address(new NaymsOwnershipFacet()), - address(new ACLFacet()), - address(new GovernanceFacet()) - ); - } - - // Find facet for function that is called and execute the - // function if a facet is found and return any value. - // solhint-disable no-complex-fallback - fallback() external payable { - LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - - // get facet from function selector - address facet = address(bytes20(ds.facets[msg.sig])); - // require(facet != address(0), "Diamond: Function does not exist"); - don't need to do this since we check for code below - LibDiamond.enforceHasContractCode(facet, "Diamond: Facet has no code"); - // Execute external function from facet using delegatecall and return any value. - assembly { - // copy function selector and any arguments - calldatacopy(0, 0, calldatasize()) - // execute function call using the facet - let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) - // get any return value - returndatacopy(0, 0, returndatasize()) - // return any return value or error back to the caller - switch result - case 0 { - revert(0, returndatasize()) - } - default { - return(0, returndatasize()) - } - } - } - - // solhint-disable no-empty-blocks - receive() external payable {} -} diff --git a/src/diamonds/nayms/interfaces/IACLFacet.sol b/src/diamonds/nayms/interfaces/IACLFacet.sol deleted file mode 100644 index f992fa9e..00000000 --- a/src/diamonds/nayms/interfaces/IACLFacet.sol +++ /dev/null @@ -1,133 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/** - * @title Access Control List - * @notice Use it to authorize various actions on the contracts - * @dev Use it to (un)assign or check role membership - */ -interface IACLFacet { - /** - * @notice Assign a `_roleId` to the object in given context - * @dev Any object ID can be a context, system is a special context with highest priority - * @param _objectId ID of an object that is being assigned a role - * @param _contextId ID of the context in which a role is being assigned - * @param _role Name of the role being assigned - */ - function assignRole( - bytes32 _objectId, - bytes32 _contextId, - string memory _role - ) external; - - /** - * @notice Unassign object from a role in given context - * @dev Any object ID can be a context, system is a special context with highest priority - * @param _objectId ID of an object that is being unassigned from a role - * @param _contextId ID of the context in which a role membership is being revoked - */ - function unassignRole(bytes32 _objectId, bytes32 _contextId) external; - - /** - * @notice Checks if an object belongs to `_group` group in given context - * @dev Assigning a role to the object makes it a member of a corresponding role group - * @param _objectId ID of an object that is being checked for role group membership - * @param _contextId Context in which membership should be checked - * @param _group name of the role group - * @return true if object with given ID is a member, false otherwise - */ - function isInGroup( - bytes32 _objectId, - bytes32 _contextId, - string memory _group - ) external view returns (bool); - - /** - * @notice Check whether a parent object belongs to the `_group` group in given context - * @dev Objects can have a parent object, i.e. entity is a parent of a user - * @param _objectId ID of an object whose parent is being checked for role group membership - * @param _contextId Context in which the role group membership is being checked - * @param _group name of the role group - * @return true if object's parent is a member of this role group, false otherwise - */ - function isParentInGroup( - bytes32 _objectId, - bytes32 _contextId, - string memory _group - ) external view returns (bool); - - /** - * @notice Check whether a user can assign specific object to the `_role` role in given context - * @dev Check permission to assign to a role - * @param _assignerId The object ID of the user who is assigning a role to another object. - * @param _objectId ID of an object that is being checked for assigning rights - * @param _contextId ID of the context in which permission is checked - * @param _role name of the role to check - * @return true if user the right to assign, false otherwise - */ - function canAssign( - bytes32 _assignerId, - bytes32 _objectId, - bytes32 _contextId, - string memory _role - ) external view returns (bool); - - /** - * @notice Check whether a user can call a specific function. - * @param _userId The object ID of the user who is calling the function. - * @param _contextId ID of the context in which permission is checked. - * @param _groupId ID of the group in which permission is checked. - */ - function hasGroupPrivilege( - bytes32 _userId, - bytes32 _contextId, - bytes32 _groupId - ) external view returns (bool); - - /** - * @notice Get a user's (an objectId's) assigned role in a specific context - * @param objectId ID of an object that is being checked for its assigned role in a specific context - * @param contextId ID of the context in which the objectId's role is being checked - * @return roleId objectId's role in the contextId - */ - function getRoleInContext(bytes32 objectId, bytes32 contextId) external view returns (bytes32); - - /** - * @notice Get whether role is in group. - * @dev Get whether role is in group. - * @param role the role. - * @param group the group. - * @return true if role is in group, false otherwise. - */ - function isRoleInGroup(string memory role, string memory group) external view returns (bool); - - /** - * @notice Get whether given group can assign given role. - * @dev Get whether given group can assign given role. - * @param role the role. - * @param group the group. - * @return true if role can be assigned by group, false otherwise. - */ - function canGroupAssignRole(string memory role, string memory group) external view returns (bool); - - /** - * @notice Update who can assign `_role` role - * @dev Update who has permission to assign this role - * @param _role name of the role - * @param _assignerGroup Group who can assign members to this role - */ - function updateRoleAssigner(string memory _role, string memory _assignerGroup) external; - - /** - * @notice Update role group memebership for `_role` role and `_group` group - * @dev Update role group memebership - * @param _role name of the role - * @param _group name of the group - * @param _roleInGroup is member of - */ - function updateRoleGroup( - string memory _role, - string memory _group, - bool _roleInGroup - ) external; -} diff --git a/src/diamonds/nayms/interfaces/IAdminFacet.sol b/src/diamonds/nayms/interfaces/IAdminFacet.sol deleted file mode 100644 index 9de405cd..00000000 --- a/src/diamonds/nayms/interfaces/IAdminFacet.sol +++ /dev/null @@ -1,100 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { FeeSchedule } from "./FreeStructs.sol"; - -/** - * @title Administration - * @notice Exposes methods that require administrative priviledges - * @dev Use it to configure various core parameters - */ -interface IAdminFacet { - /** - * @notice Set `_newMax` as the max dividend denominations value. - * @param _newMax new value to be used. - */ - function setMaxDividendDenominations(uint8 _newMax) external; - - /** - * @notice Get the max dividend denominations value - * @return max dividend denominations - */ - function getMaxDividendDenominations() external view returns (uint8); - - /** - * @notice Is the specified tokenId an external ERC20 that is supported by the Nayms platform? - * @param _tokenId token address converted to bytes32 - * @return whether token issupported or not - */ - function isSupportedExternalToken(bytes32 _tokenId) external view returns (bool); - - /** - * @notice Add another token to the supported tokens list - * @param _tokenAddress address of the token to support - */ - function addSupportedExternalToken(address _tokenAddress) external; - - /** - * @notice Get the supported tokens list as an array - * @return array containing address of all supported tokens - */ - function getSupportedExternalTokens() external view returns (address[] memory); - - /** - * @notice Gets the System context ID. - * @return System Identifier - */ - function getSystemId() external pure returns (bytes32); - - /** - * @notice Check if object can be tokenized - * @param _objectId ID of the object - */ - function isObjectTokenizable(bytes32 _objectId) external view returns (bool); - - /** - * @notice System Admin can lock a function - * @dev This toggles FunctionLockedStorage.lock to true - * @param functionSelector the bytes4 function selector - */ - function lockFunction(bytes4 functionSelector) external; - - /** - * @notice System Admin can unlock a function - * @dev This toggles FunctionLockedStorage.lock to false - * @param functionSelector the bytes4 function selector - */ - function unlockFunction(bytes4 functionSelector) external; - - /** - * @notice Check if a function has been locked by a system admin - * @dev This views FunctionLockedStorage.lock - * @param functionSelector the bytes4 function selector - */ - function isFunctionLocked(bytes4 functionSelector) external view returns (bool); - - /** - * @notice Lock all contract methods involving fund transfers - */ - function lockAllFundTransferFunctions() external; - - /** - * @notice Unlock all contract methods involving fund transfers - */ - function unlockAllFundTransferFunctions() external; - - /** - * @notice Update market maker fee basis points - * @param _newMakerBP new maker fee value - */ - function replaceMakerBP(uint16 _newMakerBP) external; - - function addFeeSchedule( - bytes32 entityId, - uint256 _feeScheduleType, - bytes32[] calldata _receiver, - uint16[] calldata _basisPoints - ) external; - - function removeFeeSchedule(bytes32 _entityId, uint256 _feeScheduleType) external; -} diff --git a/src/diamonds/nayms/interfaces/IEntityFacet.sol b/src/diamonds/nayms/interfaces/IEntityFacet.sol deleted file mode 100644 index be38e5f4..00000000 --- a/src/diamonds/nayms/interfaces/IEntityFacet.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { FeeSchedule, SimplePolicy, Entity, Stakeholders } from "./FreeStructs.sol"; - -/** - * @title Entities - * @notice Used to handle policies and token sales - * @dev Mainly used for token sale and policies - */ -interface IEntityFacet { - /** - * @dev Returns the domain separator for the current chain. - */ - function domainSeparatorV4() external view returns (bytes32); - - /** - * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this - * function returns the hash of the fully encoded EIP712 message for this domain. - * - * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example: - * - * ```solidity - * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode( - * keccak256("Mail(address to,string contents)"), - * mailTo, - * keccak256(bytes(mailContents)) - * ))); - * address signer = ECDSA.recover(digest, signature); - * ``` - */ - function hashTypedDataV4(bytes32 structHash) external view returns (bytes32); - - /** - * @notice Create a Simple Policy - * @param _policyId id of the policy - * @param _entityId id of the entity - * @param _stakeholders Struct of roles, entity IDs and signatures for the policy - * @param _simplePolicy policy to create - * @param _dataHash hash of the offchain data - */ - function createSimplePolicy( - bytes32 _policyId, - bytes32 _entityId, - Stakeholders calldata _stakeholders, - SimplePolicy calldata _simplePolicy, - bytes32 _dataHash - ) external; - - /** - * @notice Enable an entity to be tokenized - * @param _entityId ID of the entity - * @param _symbol The symbol assigned to the entity token - * @param _name The name assigned to the entity token - */ - function enableEntityTokenization( - bytes32 _entityId, - string memory _symbol, - string memory _name - ) external; - - /** - * @notice Update entity token name and symbol - * @param _entityId ID of the entity - * @param _symbol New entity token symbol - * @param _name New entity token name - */ - function updateEntityTokenInfo( - bytes32 _entityId, - string memory _symbol, - string memory _name - ) external; - - /** - * @notice Start token sale of `_amount` tokens for total price of `_totalPrice` - * @dev Entity tokens are minted when the sale is started - * @param _entityId ID of the entity - * @param _amount amount of entity tokens to put on sale - * @param _totalPrice total price of the tokens - */ - function startTokenSale( - bytes32 _entityId, - uint256 _amount, - uint256 _totalPrice - ) external; - - /** - * @notice Check if an entity token is wrapped as ERC20 - * @param _entityId ID of the entity - * @return true if it is, false otherwise - */ - function isTokenWrapped(bytes32 _entityId) external view returns (bool); - - /** - * @notice Update entity metadata - * @param _entityId ID of the entity - * @param _entity metadata of the entity - */ - function updateEntity(bytes32 _entityId, Entity calldata _entity) external; - - /** - * @notice Get the the data for entity with ID: `_entityId` - * @dev Get the Entity data for a given entityId - * @param _entityId ID of the entity - * @return Entity struct with metadata of the entity - */ - function getEntityInfo(bytes32 _entityId) external view returns (Entity memory); - - function getFeeSchedule(bytes32 _entityId, uint256 _feeScheduleType) external view returns (FeeSchedule memory); -} diff --git a/src/diamonds/nayms/interfaces/IGovernanceFacet.sol b/src/diamonds/nayms/interfaces/IGovernanceFacet.sol deleted file mode 100644 index 65677011..00000000 --- a/src/diamonds/nayms/interfaces/IGovernanceFacet.sol +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -interface IGovernanceFacet { - /** - * @notice Check if the diamond has been initialized. - * @dev This will get the value from AppStorage.diamondInitialized. - */ - function isDiamondInitialized() external view returns (bool); - - /** - * @notice Approve the following upgrade hash: `id` - * @dev The diamondCut() has been modified to check if the upgrade has been scheduled. This method needs to be called in order - * for an upgrade to be executed. - * @param id This is the keccak256(abi.encode(cut)), where cut is the array of FacetCut struct, IDiamondCut.FacetCut[]. - */ - function createUpgrade(bytes32 id) external; - - /** - * @notice Update the diamond cut upgrade expiration period. - * @dev When createUpgrade() is called, it allows a diamondCut() upgrade to be executed. This upgrade must be executed before the - * upgrade expires. The upgrade expires based on when the upgrade was scheduled (when createUpgrade() was called) + AppStorage.upgradeExpiration. - * @param duration The duration until the upgrade expires. - */ - function updateUpgradeExpiration(uint256 duration) external; - - /** - * @notice Cancel the following upgrade hash: `id` - * @dev This will set the mapping AppStorage.upgradeScheduled back to 0. - * @param id This is the keccak256(abi.encode(cut)), where cut is the array of FacetCut struct, IDiamondCut.FacetCut[]. - */ - function cancelUpgrade(bytes32 id) external; - - /** - * @notice Get the expiry date for provided upgrade hash. - * @dev This will get the value from AppStorage.upgradeScheduled mapping. - * @param id This is the keccak256(abi.encode(cut)), where cut is the array of FacetCut struct, IDiamondCut.FacetCut[]. - */ - function getUpgrade(bytes32 id) external view returns (uint256 expiry); - - /** - * @notice Get the upgrade expiration period. - * @dev This will get the value from AppStorage.upgradeExpiration. AppStorage.upgradeExpiration is added to the block.timestamp to create the upgrade expiration date. - */ - function getUpgradeExpiration() external view returns (uint256 upgradeExpiration); -} diff --git a/src/diamonds/nayms/interfaces/IMarketFacet.sol b/src/diamonds/nayms/interfaces/IMarketFacet.sol deleted file mode 100644 index 32524561..00000000 --- a/src/diamonds/nayms/interfaces/IMarketFacet.sol +++ /dev/null @@ -1,103 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { MarketInfo } from "./FreeStructs.sol"; - -/** - * @title Matching Market (inspired by MakerOTC: https://github.com/nayms/maker-otc/blob/master/contracts/matching_market.sol) - * @notice Trade entity tokens - * @dev This should only be called through an entity, never directly by an EOA - */ -interface IMarketFacet { - /** - * @notice Execute a limit offer. - * - * @param _sellToken Token to sell. - * @param _sellAmount Amount to sell. - * @param _buyToken Token to buy. - * @param _buyAmount Amount to buy. - * @return offerId_ returns >0 if a limit offer was created on the market because the offer couldn't be totally fulfilled immediately. In this case the return value is the created offer's id. - * @return buyTokenCommissionsPaid_ The amount of the buy token paid as commissions on this particular order. - * @return sellTokenCommissionsPaid_ The amount of the sell token paid as commissions on this particular order. - */ - function executeLimitOffer( - bytes32 _sellToken, - uint256 _sellAmount, - bytes32 _buyToken, - uint256 _buyAmount - ) - external - returns ( - uint256 offerId_, - uint256 buyTokenCommissionsPaid_, - uint256 sellTokenCommissionsPaid_ - ); - - /** - * @notice Cancel offer #`_offerId`. This will cancel the offer so that it's no longer active. - * - * @dev This function can be frontrun: In the scenario where a user wants to cancel an unfavorable market offer, an attacker can potentially monitor and identify - * that the user has called this method, determine that filling this market offer is profitable, and as a result call executeLimitOffer with a higher gas price to have - * their transaction filled before the user can have cancelOffer filled. The most ideal situation for the user is to not have placed the unfavorable market offer - * in the first place since an attacker can always monitor our marketplace and potentially identify profitable market offers. Our UI will aide users in not placing - * market offers that are obviously unfavorable to the user and/or seem like mistake orders. In the event that a user needs to cancel an offer, it is recommended to - * use Flashbots in order to privately send your transaction so an attack cannot be triggered from monitoring the mempool for calls to cancelOffer. A user is recommended - * to change their RPC endpoint to point to https://rpc.flashbots.net when calling cancelOffer. We will add additional documentation to aide our users in this process. - * More information on using Flashbots: https://docs.flashbots.net/flashbots-protect/rpc/quick-start/ - * - * @param _offerId offer ID - */ - function cancelOffer(uint256 _offerId) external; - - /** - * @notice Get current best offer for given token pair. - * - * @dev This means finding the highest sellToken-per-buyToken price, i.e. price = sellToken / buyToken - * - * @return offerId, or 0 if no current best is available. - */ - function getBestOfferId(bytes32 _sellToken, bytes32 _buyToken) external view returns (uint256); - - /** - * @dev Get last created offer. - * - * @return offer id. - */ - function getLastOfferId() external view returns (uint256); - - /** - * @dev Get the details of the offer #`_offerId` - * @param _offerId ID of a particular offer - * @return _offerState details of the offer - */ - function getOffer(uint256 _offerId) external view returns (MarketInfo memory _offerState); - - /** - * @dev Check if the offer #`_offerId` is active or not. - * @param _offerId ID of a particular offer - * @return active or not - */ - function isActiveOffer(uint256 _offerId) external view returns (bool); - - /** - * @dev Calculate the trading fees based on a buy amount. - * @param _buyerId The account buying the asset. - * @param _sellToken The asset being sold. - * @param _buyToken The asset being bought. - * @param _buyAmount The amount that the fees payments are calculated from. - * @return totalFees_ total fee to be payed - * @return totalBP_ total basis points - */ - function calculateTradingFees( - bytes32 _buyerId, - bytes32 _sellToken, - bytes32 _buyToken, - uint256 _buyAmount - ) external view returns (uint256 totalFees_, uint256 totalBP_); - - /** - * @dev Get the maker commission basis points. - * @return maker fee BP - */ - function getMakerBP() external view returns (uint16); -} diff --git a/src/diamonds/nayms/interfaces/INaymsTokenFacet.sol b/src/diamonds/nayms/interfaces/INaymsTokenFacet.sol deleted file mode 100644 index d35c75fe..00000000 --- a/src/diamonds/nayms/interfaces/INaymsTokenFacet.sol +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/** - * @title Nayms token facet. - * @dev Use it to access and manipulate Nayms token. - */ -interface INaymsTokenFacet { - /** - * @dev Get total supply of token. - * @return total supply. - */ - function totalSupply() external view returns (uint256); - - /** - * @dev Get token balance of given wallet. - * @param addr wallet whose balance to get. - * @return balance of wallet. - */ - function balanceOf(address addr) external view returns (uint256); -} diff --git a/src/diamonds/nayms/interfaces/ISimplePolicyFacet.sol b/src/diamonds/nayms/interfaces/ISimplePolicyFacet.sol deleted file mode 100644 index 3dd1ff04..00000000 --- a/src/diamonds/nayms/interfaces/ISimplePolicyFacet.sol +++ /dev/null @@ -1,82 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { SimplePolicyInfo, SimplePolicy, CalculatedFees } from "./FreeStructs.sol"; - -/** - * @title Simple Policies - * @notice Facet for working with Simple Policies - * @dev Simple Policy facet - */ -interface ISimplePolicyFacet { - /** - * @dev Generate a simple policy hash for singing by the stakeholders - * @param _startDate Date when policy becomes active - * @param _maturationDate Date after which policy becomes matured - * @param _asset ID of the underlying asset, used as collateral and to pay out claims - * @param _limit Policy coverage limit - * @param _offchainDataHash Hash of all the important policy data stored offchain - * @return signingHash_ hash for signing - */ - function getSigningHash( - uint256 _startDate, - uint256 _maturationDate, - bytes32 _asset, - uint256 _limit, - bytes32 _offchainDataHash - ) external view returns (bytes32 signingHash_); - - /** - * @dev Pay a premium of `_amount` on simple policy - * @param _policyId Id of the simple policy - * @param _amount Amount of the premium - */ - function paySimplePremium(bytes32 _policyId, uint256 _amount) external; - - /** - * @dev Pay a claim of `_amount` for simple policy - * @param _claimId Id of the simple policy claim - * @param _policyId Id of the simple policy - * @param _insuredId Id of the insured party - * @param _amount Amount of the claim - */ - function paySimpleClaim( - bytes32 _claimId, - bytes32 _policyId, - bytes32 _insuredId, - uint256 _amount - ) external; - - /** - * @dev Get simple policy info - * @param _id Id of the simple policy - * @return Simple policy metadata - */ - function getSimplePolicyInfo(bytes32 _id) external view returns (SimplePolicyInfo memory); - - /** - * @dev Get the list of commission receivers - * @param _id Id of the simple policy - * @return commissionReceivers - */ - function getPolicyCommissionReceivers(bytes32 _id) external returns (bytes32[] memory commissionReceivers); - - /** - * @dev Check and update simple policy state - * @param _id Id of the simple policy - */ - function checkAndUpdateSimplePolicyState(bytes32 _id) external; - - /** - * @dev Cancel a simple policy - * @param _policyId Id of the simple policy - */ - function cancelSimplePolicy(bytes32 _policyId) external; - - /** - * @dev Calculate the policy premium fees based on a buy amount. - * @param _premiumPaid The amount that the fees payments are calculated from. - * @return cf CalculatedFees struct - */ - function calculatePremiumFees(bytes32 _policyId, uint256 _premiumPaid) external view returns (CalculatedFees memory cf); -} diff --git a/src/diamonds/nayms/interfaces/ISystemFacet.sol b/src/diamonds/nayms/interfaces/ISystemFacet.sol deleted file mode 100644 index f79c8909..00000000 --- a/src/diamonds/nayms/interfaces/ISystemFacet.sol +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { Entity } from "./FreeStructs.sol"; - -/** - * @title System - * @notice Use it to perform system level operations - * @dev Use it to perform system level operations - */ -interface ISystemFacet { - /** - * @notice Create an entity - * @dev An entity can be created with a zero max capacity! This is in the event where an entity cannot write any policies. - * @param _entityId Unique ID for the entity - * @param _entityAdmin Unique ID of the entity administrator - * @param _entityData remaining entity metadata - * @param _dataHash hash of the offchain data - */ - function createEntity( - bytes32 _entityId, - bytes32 _entityAdmin, - Entity memory _entityData, - bytes32 _dataHash - ) external; - - /** - * @notice Convert a string type to a bytes32 type - * @param _strIn a string - */ - function stringToBytes32(string memory _strIn) external pure returns (bytes32 result); - - /** - * @dev Get whether given id is an object in the system. - * @param _id object id. - * @return true if it is an object, false otherwise - */ - function isObject(bytes32 _id) external view returns (bool); - - /** - * @dev Get meta of given object. - * @param _id object id. - * @return parent object parent - * @return dataHash object data hash - * @return tokenSymbol object token symbol - * @return tokenName object token name - * @return tokenWrapper object token ERC20 wrapper address - */ - function getObjectMeta(bytes32 _id) - external - view - returns ( - bytes32 parent, - bytes32 dataHash, - string memory tokenSymbol, - string memory tokenName, - address tokenWrapper - ); - - /** - * @notice Wrap an object token as ERC20 - * @param _objectId ID of the tokenized object - */ - function wrapToken(bytes32 _objectId) external; -} diff --git a/src/diamonds/nayms/interfaces/ITokenizedVaultFacet.sol b/src/diamonds/nayms/interfaces/ITokenizedVaultFacet.sol deleted file mode 100644 index 355bb3fc..00000000 --- a/src/diamonds/nayms/interfaces/ITokenizedVaultFacet.sol +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -interface ITokenizedVaultFacet { - /** - * @notice Gets balance of an account within platform - * @dev Internal balance for given account - * @param tokenId Internal ID of the asset - * @return current balance - */ - function internalBalanceOf(bytes32 accountId, bytes32 tokenId) external view returns (uint256); - - /** - * @notice Current supply for the asset - * @dev Total supply of platform asset - * @param tokenId Internal ID of the asset - * @return current balance - */ - function internalTokenSupply(bytes32 tokenId) external view returns (uint256); - - /** - * @notice Internal transfer of `amount` tokens - * @dev Transfer tokens internally - * @param to token receiver - * @param tokenId Internal ID of the token - */ - function internalTransferFromEntity( - bytes32 to, - bytes32 tokenId, - uint256 amount - ) external; - - /** - * @notice Internal transfer of `amount` tokens `from` -> `to` - * @dev Transfer tokens internally between two IDs - * @param from token sender - * @param to token receiver - * @param tokenId Internal ID of the token - */ - function wrapperInternalTransferFrom( - bytes32 from, - bytes32 to, - bytes32 tokenId, - uint256 amount - ) external; - - function internalBurn( - bytes32 from, - bytes32 tokenId, - uint256 amount - ) external; - - /** - * @notice Get withdrawable dividend amount - * @dev Divident available for an entity to withdraw - * @param _entityId Unique ID of the entity - * @param _tokenId Unique ID of token - * @param _dividendTokenId Unique ID of dividend token - * @return _entityPayout accumulated dividend - */ - function getWithdrawableDividend( - bytes32 _entityId, - bytes32 _tokenId, - bytes32 _dividendTokenId - ) external view returns (uint256 _entityPayout); - - /** - * @notice Withdraw available dividend - * @dev Transfer dividends to the entity - * @param ownerId Unique ID of the dividend receiver - * @param tokenId Unique ID of token - * @param dividendTokenId Unique ID of dividend token - */ - function withdrawDividend( - bytes32 ownerId, - bytes32 tokenId, - bytes32 dividendTokenId - ) external; - - /** - * @notice Withdraws a user's available dividends. - * @dev Dividends can be available in more than one dividend denomination. This method will withdraw all available dividends in the different dividend denominations. - * @param ownerId Unique ID of the dividend receiver - * @param tokenId Unique ID of token - */ - function withdrawAllDividends(bytes32 ownerId, bytes32 tokenId) external; - - /** - * @notice Pay `amount` of dividends - * @dev Transfer dividends to the entity - * @param guid Globally unique identifier of a dividend distribution. - * @param amount the mamount of the dividend token to be distributed to NAYMS token holders. - */ - function payDividendFromEntity(bytes32 guid, uint256 amount) external; - - /** - * @notice Get the amount of tokens that an entity has for sale in the marketplace. - * @param _entityId Unique platform ID of the entity. - * @param _tokenId The ID assigned to an external token. - * @return amount of tokens that the entity has for sale in the marketplace. - */ - function getLockedBalance(bytes32 _entityId, bytes32 _tokenId) external view returns (uint256 amount); - - function internalTransferBySystemAdmin( - bytes32 _fromEntityId, - bytes32 _toEntityId, - bytes32 _tokenId, - uint256 _amount - ) external; -} diff --git a/src/diamonds/nayms/interfaces/ITokenizedVaultIOFacet.sol b/src/diamonds/nayms/interfaces/ITokenizedVaultIOFacet.sol deleted file mode 100644 index 7846f0d5..00000000 --- a/src/diamonds/nayms/interfaces/ITokenizedVaultIOFacet.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/** - * @title Token Vault IO - * @notice External interface to the Token Vault - * @dev Used for external transfers. Adaptation of ERC-1155 that uses AppStorage and aligns with Nayms ACL implementation. - * https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC1155 - */ -interface ITokenizedVaultIOFacet { - /** - * @notice Deposit funds into msg.sender's Nayms platform entity - * @dev Deposit from msg.sender to their associated entity - * @param _externalTokenAddress Token address - * @param _amount deposit amount - */ - function externalDeposit(address _externalTokenAddress, uint256 _amount) external; - - /** - * @notice Withdraw funds out of Nayms platform - * @dev Withdraw from entity to an external account - * @param _entityId Internal ID of the entity the user is withdrawing from - * @param _receiverId Internal ID of the account receiving the funds - * @param _externalTokenAddress Token address - * @param _amount amount to withdraw - */ - function externalWithdrawFromEntity( - bytes32 _entityId, - address _receiverId, - address _externalTokenAddress, - uint256 _amount - ) external; -} diff --git a/src/diamonds/nayms/interfaces/IUserFacet.sol b/src/diamonds/nayms/interfaces/IUserFacet.sol deleted file mode 100644 index 67e2d751..00000000 --- a/src/diamonds/nayms/interfaces/IUserFacet.sol +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/** - * @title Users - * @notice Utility functions for managing a user's entity. - * @dev This contract includes functions to set and get user-entity relationships, - * and to convert wallet addresses to platform IDs and vice versa. - */ -interface IUserFacet { - /** - * @notice Get the platform ID of `addr` account - * @dev Convert address to platform ID - * @param addr Account address - * @return userId Unique platform ID - */ - function getUserIdFromAddress(address addr) external pure returns (bytes32 userId); - - /** - * @notice Get the token address from ID of the external token - * @dev Convert the bytes32 external token ID to its respective ERC20 contract address - * @param _externalTokenId The ID assigned to an external token - * @return tokenAddress Contract address - */ - function getAddressFromExternalTokenId(bytes32 _externalTokenId) external pure returns (address tokenAddress); - - /** - * @notice Set the entity for the user - * @dev Assign the user an entity. The entity must exist in order to associate it with a user. - * @param _userId Unique platform ID of the user account - * @param _entityId Unique platform ID of the entity - */ - function setEntity(bytes32 _userId, bytes32 _entityId) external; - - /** - * @notice Get the entity for the user - * @dev Gets the entity related to the user - * @param _userId Unique platform ID of the user account - * @return entityId Unique platform ID of the entity - */ - function getEntity(bytes32 _userId) external view returns (bytes32 entityId); -} diff --git a/src/diamonds/nayms/libs/LibAdmin.sol b/src/diamonds/nayms/libs/LibAdmin.sol deleted file mode 100644 index cff53326..00000000 --- a/src/diamonds/nayms/libs/LibAdmin.sol +++ /dev/null @@ -1,176 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { AppStorage, FunctionLockedStorage, LibAppStorage } from "../AppStorage.sol"; -import { LibConstants } from "./LibConstants.sol"; -import { LibHelpers } from "./LibHelpers.sol"; -import { LibObject } from "./LibObject.sol"; -import { LibERC20 } from "src/erc20/LibERC20.sol"; - -import { CannotAddNullDiscountToken, CannotAddNullSupportedExternalToken, CannotSupportExternalTokenWithMoreThan18Decimals } from "src/diamonds/nayms/interfaces/CustomErrors.sol"; -import { IEntityFacet } from "src/diamonds/nayms/interfaces/IEntityFacet.sol"; -import { ISimplePolicyFacet } from "src/diamonds/nayms/interfaces/ISimplePolicyFacet.sol"; -import { IMarketFacet } from "src/diamonds/nayms/interfaces/IMarketFacet.sol"; -import { ITokenizedVaultFacet } from "src/diamonds/nayms/interfaces/ITokenizedVaultFacet.sol"; -import { ITokenizedVaultIOFacet } from "src/diamonds/nayms/interfaces/ITokenizedVaultIOFacet.sol"; - -library LibAdmin { - event MaxDividendDenominationsUpdated(uint8 oldMax, uint8 newMax); - event SupportedTokenAdded(address indexed tokenAddress); - event FunctionsLocked(bytes4[] functionSelectors); - event FunctionsUnlocked(bytes4[] functionSelectors); - - function _getSystemId() internal pure returns (bytes32) { - return LibHelpers._stringToBytes32(LibConstants.SYSTEM_IDENTIFIER); - } - - function _getEmptyId() internal pure returns (bytes32) { - return LibHelpers._stringToBytes32(LibConstants.EMPTY_IDENTIFIER); - } - - function _updateMaxDividendDenominations(uint8 _newMaxDividendDenominations) internal { - AppStorage storage s = LibAppStorage.diamondStorage(); - uint8 old = s.maxDividendDenominations; - require(_newMaxDividendDenominations > old, "_updateMaxDividendDenominations: cannot reduce"); - s.maxDividendDenominations = _newMaxDividendDenominations; - - emit MaxDividendDenominationsUpdated(old, _newMaxDividendDenominations); - } - - function _getMaxDividendDenominations() internal view returns (uint8) { - AppStorage storage s = LibAppStorage.diamondStorage(); - return s.maxDividendDenominations; - } - - function _isSupportedExternalTokenAddress(address _tokenId) internal view returns (bool) { - AppStorage storage s = LibAppStorage.diamondStorage(); - return s.externalTokenSupported[_tokenId]; - } - - function _isSupportedExternalToken(bytes32 _tokenId) internal view returns (bool) { - AppStorage storage s = LibAppStorage.diamondStorage(); - return s.externalTokenSupported[LibHelpers._getAddressFromId(_tokenId)]; - } - - function _addSupportedExternalToken(address _tokenAddress) internal { - if (LibERC20.decimals(_tokenAddress) > 18) { - revert CannotSupportExternalTokenWithMoreThan18Decimals(); - } - AppStorage storage s = LibAppStorage.diamondStorage(); - require(!s.externalTokenSupported[_tokenAddress], "external token already added"); - require(s.objectTokenWrapperId[_tokenAddress] == bytes32(0), "cannot add participation token wrapper as external"); - - string memory symbol = LibERC20.symbol(_tokenAddress); - require(LibObject._tokenSymbolNotUsed(symbol), "token symbol already in use"); - - s.externalTokenSupported[_tokenAddress] = true; - bytes32 tokenId = LibHelpers._getIdForAddress(_tokenAddress); - LibObject._createObject(tokenId); - s.supportedExternalTokens.push(_tokenAddress); - s.tokenSymbolObjectId[symbol] = tokenId; - - emit SupportedTokenAdded(_tokenAddress); - } - - function _getSupportedExternalTokens() internal view returns (address[] memory) { - AppStorage storage s = LibAppStorage.diamondStorage(); - - // Supported tokens cannot be removed because they may exist in the system! - return s.supportedExternalTokens; - } - - function _lockFunction(bytes4 functionSelector) internal { - FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); - s.locked[functionSelector] = true; - - bytes4[] memory functionSelectors = new bytes4[](1); - functionSelectors[0] = functionSelector; - emit FunctionsLocked(functionSelectors); - } - - function _unlockFunction(bytes4 functionSelector) internal { - FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); - s.locked[functionSelector] = false; - - bytes4[] memory functionSelectors = new bytes4[](1); - functionSelectors[0] = functionSelector; - emit FunctionsUnlocked(functionSelectors); - } - - function _isFunctionLocked(bytes4 functionSelector) internal view returns (bool) { - FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); - return s.locked[functionSelector]; - } - - function _lockAllFundTransferFunctions() internal { - FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); - s.locked[IEntityFacet.startTokenSale.selector] = true; - s.locked[ISimplePolicyFacet.paySimpleClaim.selector] = true; - s.locked[ISimplePolicyFacet.paySimplePremium.selector] = true; - s.locked[ISimplePolicyFacet.checkAndUpdateSimplePolicyState.selector] = true; - s.locked[IMarketFacet.cancelOffer.selector] = true; - s.locked[IMarketFacet.executeLimitOffer.selector] = true; - s.locked[ITokenizedVaultFacet.internalTransferFromEntity.selector] = true; - s.locked[ITokenizedVaultFacet.payDividendFromEntity.selector] = true; - s.locked[ITokenizedVaultFacet.internalBurn.selector] = true; - s.locked[ITokenizedVaultFacet.wrapperInternalTransferFrom.selector] = true; - s.locked[ITokenizedVaultFacet.withdrawDividend.selector] = true; - s.locked[ITokenizedVaultFacet.withdrawAllDividends.selector] = true; - s.locked[ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector] = true; - s.locked[ITokenizedVaultIOFacet.externalDeposit.selector] = true; - - bytes4[] memory lockedFunctions = new bytes4[](14); - lockedFunctions[0] = IEntityFacet.startTokenSale.selector; - lockedFunctions[1] = ISimplePolicyFacet.paySimpleClaim.selector; - lockedFunctions[2] = ISimplePolicyFacet.paySimplePremium.selector; - lockedFunctions[3] = ISimplePolicyFacet.checkAndUpdateSimplePolicyState.selector; - lockedFunctions[4] = IMarketFacet.cancelOffer.selector; - lockedFunctions[5] = IMarketFacet.executeLimitOffer.selector; - lockedFunctions[6] = ITokenizedVaultFacet.internalTransferFromEntity.selector; - lockedFunctions[7] = ITokenizedVaultFacet.payDividendFromEntity.selector; - lockedFunctions[8] = ITokenizedVaultFacet.internalBurn.selector; - lockedFunctions[9] = ITokenizedVaultFacet.wrapperInternalTransferFrom.selector; - lockedFunctions[10] = ITokenizedVaultFacet.withdrawDividend.selector; - lockedFunctions[11] = ITokenizedVaultFacet.withdrawAllDividends.selector; - lockedFunctions[12] = ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector; - lockedFunctions[13] = ITokenizedVaultIOFacet.externalDeposit.selector; - - emit FunctionsLocked(lockedFunctions); - } - - function _unlockAllFundTransferFunctions() internal { - FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); - s.locked[IEntityFacet.startTokenSale.selector] = false; - s.locked[ISimplePolicyFacet.paySimpleClaim.selector] = false; - s.locked[ISimplePolicyFacet.paySimplePremium.selector] = false; - s.locked[ISimplePolicyFacet.checkAndUpdateSimplePolicyState.selector] = false; - s.locked[IMarketFacet.cancelOffer.selector] = false; - s.locked[IMarketFacet.executeLimitOffer.selector] = false; - s.locked[ITokenizedVaultFacet.internalTransferFromEntity.selector] = false; - s.locked[ITokenizedVaultFacet.payDividendFromEntity.selector] = false; - s.locked[ITokenizedVaultFacet.internalBurn.selector] = false; - s.locked[ITokenizedVaultFacet.wrapperInternalTransferFrom.selector] = false; - s.locked[ITokenizedVaultFacet.withdrawDividend.selector] = false; - s.locked[ITokenizedVaultFacet.withdrawAllDividends.selector] = false; - s.locked[ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector] = false; - s.locked[ITokenizedVaultIOFacet.externalDeposit.selector] = false; - - bytes4[] memory lockedFunctions = new bytes4[](14); - lockedFunctions[0] = IEntityFacet.startTokenSale.selector; - lockedFunctions[1] = ISimplePolicyFacet.paySimpleClaim.selector; - lockedFunctions[2] = ISimplePolicyFacet.paySimplePremium.selector; - lockedFunctions[3] = ISimplePolicyFacet.checkAndUpdateSimplePolicyState.selector; - lockedFunctions[4] = IMarketFacet.cancelOffer.selector; - lockedFunctions[5] = IMarketFacet.executeLimitOffer.selector; - lockedFunctions[6] = ITokenizedVaultFacet.internalTransferFromEntity.selector; - lockedFunctions[7] = ITokenizedVaultFacet.payDividendFromEntity.selector; - lockedFunctions[8] = ITokenizedVaultFacet.internalBurn.selector; - lockedFunctions[9] = ITokenizedVaultFacet.wrapperInternalTransferFrom.selector; - lockedFunctions[10] = ITokenizedVaultFacet.withdrawDividend.selector; - lockedFunctions[11] = ITokenizedVaultFacet.withdrawAllDividends.selector; - lockedFunctions[12] = ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector; - lockedFunctions[13] = ITokenizedVaultIOFacet.externalDeposit.selector; - - emit FunctionsUnlocked(lockedFunctions); - } -} diff --git a/src/diamonds/shared/facets/DiamondCutFacet.sol b/src/diamonds/shared/facets/DiamondCutFacet.sol deleted file mode 100644 index 3d215cd3..00000000 --- a/src/diamonds/shared/facets/DiamondCutFacet.sol +++ /dev/null @@ -1,58 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/******************************************************************************\ -* Author: Nick Mudge (https://twitter.com/mudgen) -* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 -/******************************************************************************/ - -import { IDiamondCut } from "../interfaces/IDiamondCut.sol"; -import { LibDiamond } from "../libs/LibDiamond.sol"; - -contract DiamondCutFacet is IDiamondCut { - /// @notice Add/replace/remove any number of functions and optionally execute - /// a function with delegatecall - /// @param _diamondCut Contains the facet addresses and function selectors - /// @param _init The address of the contract or facet to execute _calldata - /// @param _calldata A function call, including function selector and arguments - /// _calldata is executed with delegatecall on _init - function diamondCut( - FacetCut[] calldata _diamondCut, - address _init, - bytes calldata _calldata - ) external override { - LibDiamond.enforceIsContractOwner(); - LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - uint256 originalSelectorCount = ds.selectorCount; - uint256 selectorCount = originalSelectorCount; - bytes32 selectorSlot; - // Check if last selector slot is not full - // "selectorCount & 7" is a gas efficient modulo by eight "selectorCount % 8" - if (selectorCount & 7 > 0) { - // get last selectorSlot - // "selectorCount >> 3" is a gas efficient division by 8 "selectorCount / 8" - selectorSlot = ds.selectorSlots[selectorCount >> 3]; - } - // loop through diamond cut - for (uint256 facetIndex = 0; facetIndex < _diamondCut.length; facetIndex++) { - (selectorCount, selectorSlot) = LibDiamond.addReplaceRemoveFacetSelectors( - selectorCount, - selectorSlot, - _diamondCut[facetIndex].facetAddress, - _diamondCut[facetIndex].action, - _diamondCut[facetIndex].functionSelectors - ); - } - if (selectorCount != originalSelectorCount) { - ds.selectorCount = uint16(selectorCount); - } - // If last selector slot is not full - // "selectorCount & 7" is a gas efficient modulo by eight "selectorCount % 8" - if (selectorCount & 7 > 0) { - // "selectorCount >> 3" is a gas efficient division by 8 "selectorCount / 8" - ds.selectorSlots[selectorCount >> 3] = selectorSlot; - } - emit DiamondCut(_diamondCut, _init, _calldata); - LibDiamond.initializeDiamondCut(_init, _calldata); - } -} diff --git a/src/diamonds/shared/facets/DiamondLoupeFacet.sol b/src/diamonds/shared/facets/DiamondLoupeFacet.sol deleted file mode 100644 index d7b18b74..00000000 --- a/src/diamonds/shared/facets/DiamondLoupeFacet.sol +++ /dev/null @@ -1,156 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/******************************************************************************\ -* Author: Nick Mudge (https://twitter.com/mudgen) -* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 -/******************************************************************************/ - -import { LibDiamond } from "../libs/LibDiamond.sol"; -import { IDiamondLoupe } from "../interfaces/IDiamondLoupe.sol"; -import { IERC165 } from "../interfaces/IERC165.sol"; - -contract DiamondLoupeFacet is IDiamondLoupe, IERC165 { - // Diamond Loupe Functions - //////////////////////////////////////////////////////////////////// - /// These functions are expected to be called frequently by tools. - // - // struct Facet { - // address facetAddress; - // bytes4[] functionSelectors; - // } - /// @notice Gets all facets and their selectors. - /// @return facets_ Facet - function facets() external view override returns (Facet[] memory facets_) { - LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - facets_ = new Facet[](ds.selectorCount); - uint8[] memory numFacetSelectors = new uint8[](ds.selectorCount); - uint256 numFacets; - uint256 selectorIndex; - // loop through function selectors - for (uint256 slotIndex; selectorIndex < ds.selectorCount; slotIndex++) { - bytes32 slot = ds.selectorSlots[slotIndex]; - for (uint256 selectorSlotIndex; selectorSlotIndex < 8; selectorSlotIndex++) { - selectorIndex++; - if (selectorIndex > ds.selectorCount) { - break; - } - bytes4 selector = bytes4(slot << (selectorSlotIndex << 5)); - address facetAddress_ = address(bytes20(ds.facets[selector])); - bool continueLoop; - for (uint256 facetIndex; facetIndex < numFacets; facetIndex++) { - if (facets_[facetIndex].facetAddress == facetAddress_) { - facets_[facetIndex].functionSelectors[numFacetSelectors[facetIndex]] = selector; - // probably will never have more than 256 functions from one facet contract - require(numFacetSelectors[facetIndex] < 255); - numFacetSelectors[facetIndex]++; - continueLoop = true; - break; - } - } - if (continueLoop) { - continue; - } - facets_[numFacets].facetAddress = facetAddress_; - facets_[numFacets].functionSelectors = new bytes4[](ds.selectorCount); - facets_[numFacets].functionSelectors[0] = selector; - numFacetSelectors[numFacets] = 1; - numFacets++; - } - } - for (uint256 facetIndex; facetIndex < numFacets; facetIndex++) { - uint256 numSelectors = numFacetSelectors[facetIndex]; - bytes4[] memory selectors = facets_[facetIndex].functionSelectors; - // setting the number of selectors - assembly { - mstore(selectors, numSelectors) - } - } - // setting the number of facets - assembly { - mstore(facets_, numFacets) - } - } - - /// @notice Gets all the function selectors supported by a specific facet. - /// @param _facet The facet address. - /// @return facetFunctionSelectors_ The selectors associated with a facet address. - function facetFunctionSelectors(address _facet) external view override returns (bytes4[] memory facetFunctionSelectors_) { - LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - uint256 numSelectors; - facetFunctionSelectors_ = new bytes4[](ds.selectorCount); - uint256 selectorIndex; - // loop through function selectors - for (uint256 slotIndex; selectorIndex < ds.selectorCount; slotIndex++) { - bytes32 slot = ds.selectorSlots[slotIndex]; - for (uint256 selectorSlotIndex; selectorSlotIndex < 8; selectorSlotIndex++) { - selectorIndex++; - if (selectorIndex > ds.selectorCount) { - break; - } - bytes4 selector = bytes4(slot << (selectorSlotIndex << 5)); - address facet = address(bytes20(ds.facets[selector])); - if (_facet == facet) { - facetFunctionSelectors_[numSelectors] = selector; - numSelectors++; - } - } - } - // Set the number of selectors in the array - assembly { - mstore(facetFunctionSelectors_, numSelectors) - } - } - - /// @notice Get all the facet addresses used by a diamond. - /// @return facetAddresses_ - function facetAddresses() external view override returns (address[] memory facetAddresses_) { - LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - facetAddresses_ = new address[](ds.selectorCount); - uint256 numFacets; - uint256 selectorIndex; - // loop through function selectors - for (uint256 slotIndex; selectorIndex < ds.selectorCount; slotIndex++) { - bytes32 slot = ds.selectorSlots[slotIndex]; - for (uint256 selectorSlotIndex; selectorSlotIndex < 8; selectorSlotIndex++) { - selectorIndex++; - if (selectorIndex > ds.selectorCount) { - break; - } - bytes4 selector = bytes4(slot << (selectorSlotIndex << 5)); - address facetAddress_ = address(bytes20(ds.facets[selector])); - bool continueLoop; - for (uint256 facetIndex; facetIndex < numFacets; facetIndex++) { - if (facetAddress_ == facetAddresses_[facetIndex]) { - continueLoop = true; - break; - } - } - if (continueLoop) { - continue; - } - facetAddresses_[numFacets] = facetAddress_; - numFacets++; - } - } - // Set the number of facet addresses in the array - assembly { - mstore(facetAddresses_, numFacets) - } - } - - /// @notice Gets the facet that supports the given selector. - /// @dev If facet is not found return address(0). - /// @param _functionSelector The function selector. - /// @return facetAddress_ The facet address. - function facetAddress(bytes4 _functionSelector) external view override returns (address facetAddress_) { - LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - facetAddress_ = address(bytes20(ds.facets[_functionSelector])); - } - - // This implements ERC-165. - function supportsInterface(bytes4 _interfaceId) external view override returns (bool) { - LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - return ds.supportedInterfaces[_interfaceId]; - } -} diff --git a/src/diamonds/shared/facets/NaymsOwnershipFacet.sol b/src/diamonds/shared/facets/NaymsOwnershipFacet.sol deleted file mode 100644 index 95db0417..00000000 --- a/src/diamonds/shared/facets/NaymsOwnershipFacet.sol +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { LibAdmin } from "src/diamonds/nayms/libs/LibAdmin.sol"; -import { LibACL } from "src/diamonds/nayms/libs/LibACL.sol"; -import { LibHelpers } from "src/diamonds/nayms/libs/LibHelpers.sol"; -import { LibConstants as LC } from "src/diamonds/nayms/libs/LibConstants.sol"; -import { OwnershipFacet } from "src/diamonds/shared/facets/OwnershipFacet.sol"; -import { Modifiers } from "src/diamonds/nayms/Modifiers.sol"; - -contract NaymsOwnershipFacet is OwnershipFacet, Modifiers { - function transferOwnership(address _newOwner) public override assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { - bytes32 systemID = LibHelpers._stringToBytes32(LC.SYSTEM_IDENTIFIER); - bytes32 newAcc1Id = LibHelpers._getIdForAddress(_newOwner); - - require(!LibACL._isInGroup(newAcc1Id, systemID, LibHelpers._stringToBytes32(LC.GROUP_SYSTEM_ADMINS)), "NEW owner MUST NOT be sys admin"); - require(!LibACL._isInGroup(newAcc1Id, systemID, LibHelpers._stringToBytes32(LC.GROUP_SYSTEM_MANAGERS)), "NEW owner MUST NOT be sys manager"); - - super.transferOwnership(_newOwner); - } -} diff --git a/src/diamonds/shared/facets/OwnershipFacet.sol b/src/diamonds/shared/facets/OwnershipFacet.sol deleted file mode 100644 index 0e0419c7..00000000 --- a/src/diamonds/shared/facets/OwnershipFacet.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { LibDiamond } from "../libs/LibDiamond.sol"; -import { IERC173 } from "../interfaces/IERC173.sol"; - -contract OwnershipFacet is IERC173 { - function transferOwnership(address _newOwner) public virtual override { - LibDiamond.setContractOwner(_newOwner); - } - - function owner() external view override returns (address owner_) { - owner_ = LibDiamond.contractOwner(); - } -} diff --git a/src/diamonds/shared/interfaces/IDiamondCut.sol b/src/diamonds/shared/interfaces/IDiamondCut.sol deleted file mode 100644 index 517cce42..00000000 --- a/src/diamonds/shared/interfaces/IDiamondCut.sol +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/******************************************************************************\ -* Author: Nick Mudge (https://twitter.com/mudgen) -* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 -/******************************************************************************/ - -interface IDiamondCut { - enum FacetCutAction { - Add, - Replace, - Remove - } - // Add=0, Replace=1, Remove=2 - - struct FacetCut { - address facetAddress; - FacetCutAction action; - bytes4[] functionSelectors; - } - - /// @notice Add/replace/remove any number of functions and optionally execute - /// a function with delegatecall - /// @param _diamondCut Contains the facet addresses and function selectors - /// @param _init The address of the contract or facet to execute _calldata - /// @param _calldata A function call, including function selector and arguments - /// _calldata is executed with delegatecall on _init - function diamondCut( - FacetCut[] calldata _diamondCut, - address _init, - bytes calldata _calldata - ) external; - - event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); -} diff --git a/src/diamonds/shared/interfaces/IDiamondLoupe.sol b/src/diamonds/shared/interfaces/IDiamondLoupe.sol deleted file mode 100644 index 8d4ca317..00000000 --- a/src/diamonds/shared/interfaces/IDiamondLoupe.sol +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/******************************************************************************\ -* Author: Nick Mudge (https://twitter.com/mudgen) -* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 -/******************************************************************************/ - -// A loupe is a small magnifying glass used to look at diamonds. -// These functions look at diamonds -interface IDiamondLoupe { - /// These functions are expected to be called frequently - /// by tools. - - struct Facet { - address facetAddress; - bytes4[] functionSelectors; - } - - /// @notice Gets all facet addresses and their four byte function selectors. - /// @return facets_ Facet - function facets() external view returns (Facet[] memory facets_); - - /// @notice Gets all the function selectors supported by a specific facet. - /// @param _facet The facet address. - /// @return facetFunctionSelectors_ - function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_); - - /// @notice Get all the facet addresses used by a diamond. - /// @return facetAddresses_ - function facetAddresses() external view returns (address[] memory facetAddresses_); - - /// @notice Gets the facet that supports the given selector. - /// @dev If facet is not found return address(0). - /// @param _functionSelector The function selector. - /// @return facetAddress_ The facet address. - function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_); -} diff --git a/src/diamonds/shared/libs/LibDiamond.sol b/src/diamonds/shared/libs/LibDiamond.sol deleted file mode 100644 index 7eb8052b..00000000 --- a/src/diamonds/shared/libs/LibDiamond.sol +++ /dev/null @@ -1,337 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -/******************************************************************************\ -* Author: Nick Mudge (https://twitter.com/mudgen) -* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 -/******************************************************************************/ -import { IDiamondCut } from "../interfaces/IDiamondCut.sol"; -import { IDiamondLoupe } from "../interfaces/IDiamondLoupe.sol"; -import { IERC165 } from "../interfaces/IERC165.sol"; -import { IERC173 } from "../interfaces/IERC173.sol"; -import { IACLFacet } from "src/diamonds/nayms/interfaces/IACLFacet.sol"; -import { IGovernanceFacet } from "src/diamonds/nayms/interfaces/IGovernanceFacet.sol"; -import { AppStorage, LibAppStorage } from "src/diamonds/nayms/AppStorage.sol"; -import { LibHelpers } from "src/diamonds/nayms/libs/LibHelpers.sol"; -import { LibConstants } from "src/diamonds/nayms/libs/LibConstants.sol"; -import { LibAdmin } from "src/diamonds/nayms/libs/LibAdmin.sol"; -import { LibACL } from "src/diamonds/nayms/libs/LibACL.sol"; - -error InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata); - -library LibDiamond { - bytes32 internal constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); - - struct DiamondStorage { - // maps function selectors to the facets that execute the functions. - // and maps the selectors to their position in the selectorSlots array. - // func selector => address facet, selector position - mapping(bytes4 => bytes32) facets; - // array of slots of function selectors. - // each slot holds 8 function selectors. - mapping(uint256 => bytes32) selectorSlots; - // The number of function selectors in selectorSlots - uint16 selectorCount; - // Used to query if a contract implements an interface. - // Used to implement ERC-165. - mapping(bytes4 => bool) supportedInterfaces; - // owner of the contract - address contractOwner; - } - - event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); - event DiamondCut(IDiamondCut.FacetCut[] diamondCut, address init, bytes _calldata); - - function diamondStorage() internal pure returns (DiamondStorage storage ds) { - bytes32 position = DIAMOND_STORAGE_POSITION; - assembly { - ds.slot := position - } - } - - function setContractOwner(address _newOwner) internal { - DiamondStorage storage ds = diamondStorage(); - address previousOwner = ds.contractOwner; - ds.contractOwner = _newOwner; - emit OwnershipTransferred(previousOwner, _newOwner); - } - - function contractOwner() internal view returns (address contractOwner_) { - contractOwner_ = diamondStorage().contractOwner; - } - - function enforceIsContractOwner() internal view { - require(msg.sender == diamondStorage().contractOwner, "LibDiamond: Must be contract owner"); - } - - function setRoleGroupsAndAssigners() internal { - LibACL._updateRoleGroup(LibConstants.ROLE_SYSTEM_ADMIN, LibConstants.GROUP_SYSTEM_ADMINS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_SYSTEM_ADMIN, LibConstants.GROUP_SYSTEM_MANAGERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_SYSTEM_MANAGER, LibConstants.GROUP_SYSTEM_MANAGERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_ENTITY_ADMIN, LibConstants.GROUP_ENTITY_ADMINS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_ENTITY_MANAGER, LibConstants.GROUP_ENTITY_MANAGERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_BROKER, LibConstants.GROUP_BROKERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_UNDERWRITER, LibConstants.GROUP_UNDERWRITERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_INSURED_PARTY, LibConstants.GROUP_INSURED_PARTIES, true); - LibACL._updateRoleGroup(LibConstants.ROLE_CAPITAL_PROVIDER, LibConstants.GROUP_CAPITAL_PROVIDERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_CLAIMS_ADMIN, LibConstants.GROUP_CLAIMS_ADMINS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_TRADER, LibConstants.GROUP_TRADERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_SEGREGATED_ACCOUNT, LibConstants.GROUP_SEGREGATED_ACCOUNTS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_SERVICE_PROVIDER, LibConstants.GROUP_SERVICE_PROVIDERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_BROKER, LibConstants.GROUP_POLICY_HANDLERS, true); - LibACL._updateRoleGroup(LibConstants.ROLE_INSURED_PARTY, LibConstants.GROUP_POLICY_HANDLERS, true); - - LibACL._updateRoleAssigner(LibConstants.ROLE_SYSTEM_ADMIN, LibConstants.GROUP_SYSTEM_ADMINS); - LibACL._updateRoleAssigner(LibConstants.ROLE_SYSTEM_MANAGER, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_ENTITY_ADMIN, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_ENTITY_MANAGER, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_BROKER, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_UNDERWRITER, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_INSURED_PARTY, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_CAPITAL_PROVIDER, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_CLAIMS_ADMIN, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_TRADER, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_SEGREGATED_ACCOUNT, LibConstants.GROUP_SYSTEM_MANAGERS); - LibACL._updateRoleAssigner(LibConstants.ROLE_SERVICE_PROVIDER, LibConstants.GROUP_SYSTEM_MANAGERS); - } - - function setSystemAdmin(address _newSystemAdmin) internal { - AppStorage storage s = LibAppStorage.diamondStorage(); - - bytes32 userId = LibHelpers._getIdForAddress(_newSystemAdmin); - s.existingObjects[userId] = true; - - LibACL._assignRole(userId, LibAdmin._getSystemId(), LibHelpers._stringToBytes32(LibConstants.ROLE_SYSTEM_ADMIN)); - } - - function setUpgradeExpiration() internal { - AppStorage storage s = LibAppStorage.diamondStorage(); - /// @dev We set the upgrade expiration to 7 days from now (604800 seconds) - s.upgradeExpiration = 1 weeks; - } - - function addDiamondFunctions( - address _diamondCutFacet, - address _diamondLoupeFacet, - address _ownershipFacet, - address _aclFacet, - address _governanceFacet - ) internal { - IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](5); - bytes4[] memory functionSelectors = new bytes4[](1); - functionSelectors[0] = IDiamondCut.diamondCut.selector; - cut[0] = IDiamondCut.FacetCut({ facetAddress: _diamondCutFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors }); - functionSelectors = new bytes4[](5); - functionSelectors[0] = IDiamondLoupe.facets.selector; - functionSelectors[1] = IDiamondLoupe.facetFunctionSelectors.selector; - functionSelectors[2] = IDiamondLoupe.facetAddresses.selector; - functionSelectors[3] = IDiamondLoupe.facetAddress.selector; - functionSelectors[4] = IERC165.supportsInterface.selector; - cut[1] = IDiamondCut.FacetCut({ facetAddress: _diamondLoupeFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors }); - functionSelectors = new bytes4[](2); - functionSelectors[0] = IERC173.transferOwnership.selector; - functionSelectors[1] = IERC173.owner.selector; - cut[2] = IDiamondCut.FacetCut({ facetAddress: _ownershipFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors }); - functionSelectors = new bytes4[](11); - functionSelectors[0] = IACLFacet.assignRole.selector; - functionSelectors[1] = IACLFacet.unassignRole.selector; - functionSelectors[2] = IACLFacet.isInGroup.selector; - functionSelectors[3] = IACLFacet.isParentInGroup.selector; - functionSelectors[4] = IACLFacet.canAssign.selector; - functionSelectors[5] = IACLFacet.getRoleInContext.selector; - functionSelectors[6] = IACLFacet.isRoleInGroup.selector; - functionSelectors[7] = IACLFacet.canGroupAssignRole.selector; - functionSelectors[8] = IACLFacet.updateRoleAssigner.selector; - functionSelectors[9] = IACLFacet.updateRoleGroup.selector; - functionSelectors[10] = IACLFacet.hasGroupPrivilege.selector; - cut[3] = IDiamondCut.FacetCut({ facetAddress: _aclFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors }); - functionSelectors = new bytes4[](6); - functionSelectors[0] = IGovernanceFacet.isDiamondInitialized.selector; - functionSelectors[1] = IGovernanceFacet.createUpgrade.selector; - functionSelectors[2] = IGovernanceFacet.updateUpgradeExpiration.selector; - functionSelectors[3] = IGovernanceFacet.cancelUpgrade.selector; - functionSelectors[4] = IGovernanceFacet.getUpgrade.selector; - functionSelectors[5] = IGovernanceFacet.getUpgradeExpiration.selector; - cut[4] = IDiamondCut.FacetCut({ facetAddress: _governanceFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors }); - diamondCut(cut, address(0), ""); - } - - bytes32 internal constant CLEAR_ADDRESS_MASK = bytes32(uint256(0xffffffffffffffffffffffff)); - bytes32 internal constant CLEAR_SELECTOR_MASK = bytes32(uint256(0xffffffff << 224)); - - // Internal function version of diamondCut - // This code is almost the same as the external diamondCut, - // except it is using 'Facet[] memory _diamondCut' instead of - // 'Facet[] calldata _diamondCut'. - // The code is duplicated to prevent copying calldata to memory which - // causes an error for a two dimensional array. - function diamondCut( - IDiamondCut.FacetCut[] memory _diamondCut, - address _init, - bytes memory _calldata - ) internal { - DiamondStorage storage ds = diamondStorage(); - uint256 originalSelectorCount = ds.selectorCount; - uint256 selectorCount = originalSelectorCount; - bytes32 selectorSlot; - // Check if last selector slot is not full - // "selectorCount & 7" is a gas efficient modulo by eight "selectorCount % 8" - if (selectorCount & 7 > 0) { - // get last selectorSlot - // "selectorSlot >> 3" is a gas efficient division by 8 "selectorSlot / 8" - selectorSlot = ds.selectorSlots[selectorCount >> 3]; - } - // loop through diamond cut - for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) { - (selectorCount, selectorSlot) = addReplaceRemoveFacetSelectors( - selectorCount, - selectorSlot, - _diamondCut[facetIndex].facetAddress, - _diamondCut[facetIndex].action, - _diamondCut[facetIndex].functionSelectors - ); - } - if (selectorCount != originalSelectorCount) { - ds.selectorCount = uint16(selectorCount); - } - // If last selector slot is not full - // "selectorCount & 7" is a gas efficient modulo by eight "selectorCount % 8" - if (selectorCount & 7 > 0) { - // "selectorSlot >> 3" is a gas efficient division by 8 "selectorSlot / 8" - ds.selectorSlots[selectorCount >> 3] = selectorSlot; - } - emit DiamondCut(_diamondCut, _init, _calldata); - initializeDiamondCut(_init, _calldata); - } - - function addReplaceRemoveFacetSelectors( - uint256 _selectorCount, - bytes32 _selectorSlot, - address _newFacetAddress, - IDiamondCut.FacetCutAction _action, - bytes4[] memory _selectors - ) internal returns (uint256, bytes32) { - DiamondStorage storage ds = diamondStorage(); - require(_selectors.length > 0, "LibDiamondCut: No selectors in facet to cut"); - if (_action == IDiamondCut.FacetCutAction.Add) { - enforceHasContractCode(_newFacetAddress, "LibDiamondCut: Add facet has no code"); - for (uint256 selectorIndex; selectorIndex < _selectors.length; selectorIndex++) { - bytes4 selector = _selectors[selectorIndex]; - bytes32 oldFacet = ds.facets[selector]; - require(address(bytes20(oldFacet)) == address(0), "LibDiamondCut: Can't add function that already exists"); - // add facet for selector - ds.facets[selector] = bytes20(_newFacetAddress) | bytes32(_selectorCount); - // "_selectorCount & 7" is a gas efficient modulo by eight "_selectorCount % 8" - uint256 selectorInSlotPosition = (_selectorCount & 7) << 5; - // clear selector position in slot and add selector - _selectorSlot = (_selectorSlot & ~(CLEAR_SELECTOR_MASK >> selectorInSlotPosition)) | (bytes32(selector) >> selectorInSlotPosition); - // if slot is full then write it to storage - if (selectorInSlotPosition == 224) { - // "_selectorSlot >> 3" is a gas efficient division by 8 "_selectorSlot / 8" - ds.selectorSlots[_selectorCount >> 3] = _selectorSlot; - _selectorSlot = 0; - } - _selectorCount++; - } - } else if (_action == IDiamondCut.FacetCutAction.Replace) { - enforceHasContractCode(_newFacetAddress, "LibDiamondCut: Replace facet has no code"); - for (uint256 selectorIndex; selectorIndex < _selectors.length; selectorIndex++) { - bytes4 selector = _selectors[selectorIndex]; - bytes32 oldFacet = ds.facets[selector]; - address oldFacetAddress = address(bytes20(oldFacet)); - // only useful if immutable functions exist - require(oldFacetAddress != address(this), "LibDiamondCut: Can't replace immutable function"); - require(oldFacetAddress != _newFacetAddress, "LibDiamondCut: Can't replace function with same function"); - require(oldFacetAddress != address(0), "LibDiamondCut: Can't replace function that doesn't exist"); - // replace old facet address - ds.facets[selector] = (oldFacet & CLEAR_ADDRESS_MASK) | bytes20(_newFacetAddress); - } - } else if (_action == IDiamondCut.FacetCutAction.Remove) { - require(_newFacetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)"); - // "_selectorCount >> 3" is a gas efficient division by 8 "_selectorCount / 8" - uint256 selectorSlotCount = _selectorCount >> 3; - // "_selectorCount & 7" is a gas efficient modulo by eight "_selectorCount % 8" - uint256 selectorInSlotIndex = _selectorCount & 7; - for (uint256 selectorIndex; selectorIndex < _selectors.length; selectorIndex++) { - if (_selectorSlot == 0) { - // get last selectorSlot - selectorSlotCount--; - _selectorSlot = ds.selectorSlots[selectorSlotCount]; - selectorInSlotIndex = 7; - } else { - selectorInSlotIndex--; - } - bytes4 lastSelector; - uint256 oldSelectorsSlotCount; - uint256 oldSelectorInSlotPosition; - // adding a block here prevents stack too deep error - { - bytes4 selector = _selectors[selectorIndex]; - bytes32 oldFacet = ds.facets[selector]; - require(address(bytes20(oldFacet)) != address(0), "LibDiamondCut: Can't remove function that doesn't exist"); - // only useful if immutable functions exist - require(address(bytes20(oldFacet)) != address(this), "LibDiamondCut: Can't remove immutable function"); - // replace selector with last selector in ds.facets - // gets the last selector - lastSelector = bytes4(_selectorSlot << (selectorInSlotIndex << 5)); - if (lastSelector != selector) { - // update last selector slot position info - ds.facets[lastSelector] = (oldFacet & CLEAR_ADDRESS_MASK) | bytes20(ds.facets[lastSelector]); - } - delete ds.facets[selector]; - uint256 oldSelectorCount = uint16(uint256(oldFacet)); - // "oldSelectorCount >> 3" is a gas efficient division by 8 "oldSelectorCount / 8" - oldSelectorsSlotCount = oldSelectorCount >> 3; - // "oldSelectorCount & 7" is a gas efficient modulo by eight "oldSelectorCount % 8" - oldSelectorInSlotPosition = (oldSelectorCount & 7) << 5; - } - if (oldSelectorsSlotCount != selectorSlotCount) { - bytes32 oldSelectorSlot = ds.selectorSlots[oldSelectorsSlotCount]; - // clears the selector we are deleting and puts the last selector in its place. - oldSelectorSlot = (oldSelectorSlot & ~(CLEAR_SELECTOR_MASK >> oldSelectorInSlotPosition)) | (bytes32(lastSelector) >> oldSelectorInSlotPosition); - // update storage with the modified slot - ds.selectorSlots[oldSelectorsSlotCount] = oldSelectorSlot; - } else { - // clears the selector we are deleting and puts the last selector in its place. - _selectorSlot = (_selectorSlot & ~(CLEAR_SELECTOR_MASK >> oldSelectorInSlotPosition)) | (bytes32(lastSelector) >> oldSelectorInSlotPosition); - } - if (selectorInSlotIndex == 0) { - delete ds.selectorSlots[selectorSlotCount]; - _selectorSlot = 0; - } - } - _selectorCount = selectorSlotCount * 8 + selectorInSlotIndex; - } else { - revert("LibDiamondCut: Incorrect FacetCutAction"); - } - return (_selectorCount, _selectorSlot); - } - - function initializeDiamondCut(address _init, bytes memory _calldata) internal { - if (_init == address(0)) { - require(_calldata.length == 0, "LibDiamondCut: _init is address(0) but_calldata is not empty"); - } else { - require(_calldata.length > 0, "LibDiamondCut: _calldata is empty but _init is not address(0)"); - if (_init != address(this)) { - enforceHasContractCode(_init, "LibDiamondCut: _init address has no code"); - } - (bool success, bytes memory error) = _init.delegatecall(_calldata); - if (!success) { - if (error.length > 0) { - // bubble up the error - revert(string(error)); - } else { - revert InitializationFunctionReverted(_init, _calldata); - } - } - } - } - - function enforceHasContractCode(address _contract, string memory _errorMessage) internal view { - uint256 contractSize; - assembly { - contractSize := extcodesize(_contract) - } - require(contractSize > 0, _errorMessage); - } -} diff --git a/src/diamonds/nayms/facets/ACLFacet.sol b/src/facets/ACLFacet.sol similarity index 85% rename from src/diamonds/nayms/facets/ACLFacet.sol rename to src/facets/ACLFacet.sol index 19e2438e..2e4422f9 100644 --- a/src/diamonds/nayms/facets/ACLFacet.sol +++ b/src/facets/ACLFacet.sol @@ -1,19 +1,18 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { LibAdmin } from "../libs/LibAdmin.sol"; import { LibACL, LibHelpers } from "../libs/LibACL.sol"; import { LibConstants as LC } from "../libs/LibConstants.sol"; -import { Modifiers } from "../Modifiers.sol"; -import { IACLFacet } from "../interfaces/IACLFacet.sol"; -import { AssignerCannotUnassignRole } from "../interfaces/CustomErrors.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; +import { AssignerCannotUnassignRole } from "../shared/CustomErrors.sol"; /** * @title Access Control List * @notice Use it to authorize various actions on the contracts * @dev Use it to (un)assign or check role membership */ -contract ACLFacet is Modifiers, IACLFacet { +contract ACLFacet is Modifiers { using LibHelpers for *; /** @@ -23,11 +22,7 @@ contract ACLFacet is Modifiers, IACLFacet { * @param _contextId ID of the context in which a role is being assigned * @param _role Name of the role being assigned */ - function assignRole( - bytes32 _objectId, - bytes32 _contextId, - string memory _role - ) external { + function assignRole(bytes32 _objectId, bytes32 _contextId, string memory _role) external { bytes32 assignerId = LibHelpers._getIdForAddress(msg.sender); require(LibACL._canAssign(assignerId, _objectId, _contextId, LibHelpers._stringToBytes32(_role)), "not in assigners group"); @@ -62,11 +57,7 @@ contract ACLFacet is Modifiers, IACLFacet { * @param _group name of the role group * @return true if object with given ID is a member, false otherwise */ - function isInGroup( - bytes32 _objectId, - bytes32 _contextId, - string memory _group - ) external view returns (bool) { + function isInGroup(bytes32 _objectId, bytes32 _contextId, string memory _group) external view returns (bool) { return LibACL._isInGroup(_objectId, _contextId, LibHelpers._stringToBytes32(_group)); } @@ -78,11 +69,7 @@ contract ACLFacet is Modifiers, IACLFacet { * @param _group name of the role group * @return true if object's parent is a member of this role group, false otherwise */ - function isParentInGroup( - bytes32 _objectId, - bytes32 _contextId, - string memory _group - ) external view returns (bool) { + function isParentInGroup(bytes32 _objectId, bytes32 _contextId, string memory _group) external view returns (bool) { return LibACL._isParentInGroup(_objectId, _contextId, LibHelpers._stringToBytes32(_group)); } @@ -95,12 +82,7 @@ contract ACLFacet is Modifiers, IACLFacet { * @param _role name of the role to check * @return true if user has the right to assign, false otherwise */ - function canAssign( - bytes32 _assignerId, - bytes32 _objectId, - bytes32 _contextId, - string memory _role - ) external view returns (bool) { + function canAssign(bytes32 _assignerId, bytes32 _objectId, bytes32 _contextId, string memory _role) external view returns (bool) { return LibACL._canAssign(_assignerId, _objectId, _contextId, LibHelpers._stringToBytes32(_role)); } @@ -110,11 +92,7 @@ contract ACLFacet is Modifiers, IACLFacet { * @param _contextId ID of the context in which permission is checked. * @param _groupId ID of the group in which permission is checked. */ - function hasGroupPrivilege( - bytes32 _userId, - bytes32 _contextId, - bytes32 _groupId - ) external view returns (bool) { + function hasGroupPrivilege(bytes32 _userId, bytes32 _contextId, bytes32 _groupId) external view returns (bool) { return LibACL._hasGroupPrivilege(_userId, _contextId, _groupId); } @@ -167,11 +145,7 @@ contract ACLFacet is Modifiers, IACLFacet { * @param _group name of the group * @param _roleInGroup is member of */ - function updateRoleGroup( - string memory _role, - string memory _group, - bool _roleInGroup - ) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { + function updateRoleGroup(string memory _role, string memory _group, bool _roleInGroup) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { require(!strEquals(_group, LC.GROUP_SYSTEM_ADMINS), "system admins group is not modifiable"); LibACL._updateRoleGroup(_role, _group, _roleInGroup); } diff --git a/src/diamonds/nayms/facets/AdminFacet.sol b/src/facets/AdminFacet.sol similarity index 87% rename from src/diamonds/nayms/facets/AdminFacet.sol rename to src/facets/AdminFacet.sol index 9ecb4353..9d991847 100644 --- a/src/diamonds/nayms/facets/AdminFacet.sol +++ b/src/facets/AdminFacet.sol @@ -1,21 +1,20 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; -import { Modifiers } from "../Modifiers.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; import { LibAdmin } from "../libs/LibAdmin.sol"; import { LibObject } from "../libs/LibObject.sol"; import { LibConstants as LC } from "../libs/LibConstants.sol"; import { LibFeeRouter } from "../libs/LibFeeRouter.sol"; -import { FeeSchedule } from "../interfaces/FreeStructs.sol"; -import { IAdminFacet } from "../interfaces/IAdminFacet.sol"; +import { FeeSchedule } from "../shared/FreeStructs.sol"; /** * @title Administration * @notice Exposes methods that require administrative privileges * @dev Use it to configure various core parameters */ -contract AdminFacet is IAdminFacet, Modifiers { +contract AdminFacet is Modifiers { /** * @notice Set `_newMax` as the max dividend denominations value. * @param _newMax new value to be used. @@ -45,9 +44,10 @@ contract AdminFacet is IAdminFacet, Modifiers { /** * @notice Add another token to the supported tokens list * @param _tokenAddress address of the token to support + * @param _minimumSell minimum amount of tokens that can be sold on the marketplace */ - function addSupportedExternalToken(address _tokenAddress) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { - LibAdmin._addSupportedExternalToken(_tokenAddress); + function addSupportedExternalToken(address _tokenAddress, uint256 _minimumSell) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { + LibAdmin._addSupportedExternalToken(_tokenAddress, _minimumSell); } /** diff --git a/src/diamonds/nayms/facets/EntityFacet.sol b/src/facets/EntityFacet.sol similarity index 83% rename from src/diamonds/nayms/facets/EntityFacet.sol rename to src/facets/EntityFacet.sol index 4de93a93..b5c5377d 100644 --- a/src/diamonds/nayms/facets/EntityFacet.sol +++ b/src/facets/EntityFacet.sol @@ -1,23 +1,23 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { Entity, SimplePolicy, Stakeholders, FeeSchedule } from "../AppStorage.sol"; -import { Modifiers } from "../Modifiers.sol"; +import { Entity, SimplePolicy, Stakeholders, FeeSchedule } from "../shared/AppStorage.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; import { LibEntity } from "../libs/LibEntity.sol"; import { LibObject } from "../libs/LibObject.sol"; + import { LibAdmin } from "../libs/LibAdmin.sol"; import { LibConstants as LC } from "../libs/LibConstants.sol"; -import { ReentrancyGuard } from "../../../utils/ReentrancyGuard.sol"; -import { IEntityFacet } from "../interfaces/IEntityFacet.sol"; -import { LibEIP712 } from "src/diamonds/nayms/libs/LibEIP712.sol"; -import { LibFeeRouter } from "src/diamonds/nayms/libs/LibFeeRouter.sol"; +import { ReentrancyGuard } from "../utils/ReentrancyGuard.sol"; +import { LibEIP712 } from "src/libs/LibEIP712.sol"; +import { LibFeeRouter } from "src/libs/LibFeeRouter.sol"; /** * @title Entities * @notice Used to handle policies and token sales * @dev Mainly used for token sale and policies */ -contract EntityFacet is IEntityFacet, Modifiers, ReentrancyGuard { +contract EntityFacet is Modifiers, ReentrancyGuard { modifier assertSimplePolicyEnabled(bytes32 _entityId) { require(LibEntity._getEntityInfo(_entityId).simplePolicyEnabled, "simple policy creation disabled"); _; @@ -58,9 +58,10 @@ contract EntityFacet is IEntityFacet, Modifiers, ReentrancyGuard { function enableEntityTokenization( bytes32 _objectId, string memory _symbol, - string memory _name + string memory _name, + uint256 _minimumSell ) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_MANAGERS) { - LibObject._enableObjectTokenization(_objectId, _symbol, _name); + LibObject._enableObjectTokenization(_objectId, _symbol, _name, _minimumSell); } /** @@ -69,11 +70,7 @@ contract EntityFacet is IEntityFacet, Modifiers, ReentrancyGuard { * @param _symbol New entity token symbol * @param _name New entity token name */ - function updateEntityTokenInfo( - bytes32 _entityId, - string memory _symbol, - string memory _name - ) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_MANAGERS) { + function updateEntityTokenInfo(bytes32 _entityId, string memory _symbol, string memory _name) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_MANAGERS) { LibObject._updateTokenInfo(_entityId, _symbol, _name); } @@ -128,4 +125,12 @@ contract EntityFacet is IEntityFacet, Modifiers, ReentrancyGuard { function getFeeSchedule(bytes32 _entityId, uint256 _feeScheduleType) external view returns (FeeSchedule memory) { return LibFeeRouter._getFeeSchedule(_entityId, _feeScheduleType); } + + /** + * @notice Get the object's token symbol + * @param _objectId ID of the object + */ + function getObjectTokenSymbol(bytes32 _objectId) external view returns (string memory) { + return LibObject._objectTokenSymbol(_objectId); + } } diff --git a/src/diamonds/nayms/facets/GovernanceFacet.sol b/src/facets/GovernanceFacet.sol similarity index 76% rename from src/diamonds/nayms/facets/GovernanceFacet.sol rename to src/facets/GovernanceFacet.sol index da878b3c..18679ef1 100644 --- a/src/diamonds/nayms/facets/GovernanceFacet.sol +++ b/src/facets/GovernanceFacet.sol @@ -1,13 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { LibAdmin } from "../libs/LibAdmin.sol"; -import { LibConstants as LC } from "../libs/LibConstants.sol"; -import { Modifiers } from "../Modifiers.sol"; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; -import { IGovernanceFacet } from "../interfaces/IGovernanceFacet.sol"; +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; +import { LibGovernance } from "src/libs/LibGovernance.sol"; +import { LibAdmin } from "src/libs/LibAdmin.sol"; +import { LibConstants as LC } from "src/libs/LibConstants.sol"; -contract GovernanceFacet is Modifiers, IGovernanceFacet { +contract GovernanceFacet is Modifiers { event CreateUpgrade(bytes32 id, address indexed who); event UpdateUpgradeExpiration(uint256 duration); event UpgradeCancelled(bytes32 id, address indexed who); @@ -21,6 +22,10 @@ contract GovernanceFacet is Modifiers, IGovernanceFacet { return s.diamondInitialized; } + function calculateUpgradeId(IDiamondCut.FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external pure returns (bytes32) { + return LibGovernance._calculateUpgradeId(_diamondCut, _init, _calldata); + } + function createUpgrade(bytes32 id) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { AppStorage storage s = LibAppStorage.diamondStorage(); diff --git a/src/diamonds/nayms/facets/MarketFacet.sol b/src/facets/MarketFacet.sol similarity index 81% rename from src/diamonds/nayms/facets/MarketFacet.sol rename to src/facets/MarketFacet.sol index b990e8f5..d8e236ac 100644 --- a/src/diamonds/nayms/facets/MarketFacet.sol +++ b/src/facets/MarketFacet.sol @@ -1,23 +1,23 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { Modifiers } from "../Modifiers.sol"; -import { CalculatedFees, MarketInfo } from "../AppStorage.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; +import { CalculatedFees, MarketInfo } from "../shared/AppStorage.sol"; +import { LibAdmin } from "../libs/LibAdmin.sol"; import { LibConstants as LC } from "../libs/LibConstants.sol"; import { LibHelpers } from "../libs/LibHelpers.sol"; import { LibMarket } from "../libs/LibMarket.sol"; import { LibObject } from "../libs/LibObject.sol"; import { LibFeeRouter } from "../libs/LibFeeRouter.sol"; -import { IMarketFacet } from "../interfaces/IMarketFacet.sol"; -import { ReentrancyGuard } from "../../../utils/ReentrancyGuard.sol"; +import { ReentrancyGuard } from "../utils/ReentrancyGuard.sol"; /** * @title Matching Market (inspired by MakerOTC: https://github.com/nayms/maker-otc/blob/master/contracts/matching_market.sol) * @notice Trade entity tokens * @dev This should only be called through an entity, never directly by an EOA */ -contract MarketFacet is IMarketFacet, Modifiers, ReentrancyGuard { +contract MarketFacet is Modifiers, ReentrancyGuard { /** * @notice Cancel offer #`_offerId`. This will cancel the offer so that it's no longer active. * @@ -60,11 +60,7 @@ contract MarketFacet is IMarketFacet, Modifiers, ReentrancyGuard { notLocked(msg.sig) nonReentrant assertPrivilege(LibObject._getParentFromAddress(msg.sender), LC.GROUP_EXECUTE_LIMIT_OFFER) - returns ( - uint256 offerId_, - uint256 buyTokenCommissionsPaid_, - uint256 sellTokenCommissionsPaid_ - ) + returns (uint256 offerId_, uint256 buyTokenCommissionsPaid_, uint256 sellTokenCommissionsPaid_) { // Get the msg.sender's entityId. The parent is the entityId associated with the child, aka the msg.sender. // note: Only the entity associated with the msg.sender can make an offer on the market @@ -120,16 +116,28 @@ contract MarketFacet is IMarketFacet, Modifiers, ReentrancyGuard { * @return totalFees_ total fee to be payed * @return totalBP_ total basis points */ - function calculateTradingFees( - bytes32 _buyerId, - bytes32 _sellToken, - bytes32 _buyToken, - uint256 _buyAmount - ) external view returns (uint256 totalFees_, uint256 totalBP_) { + function calculateTradingFees(bytes32 _buyerId, bytes32 _sellToken, bytes32 _buyToken, uint256 _buyAmount) external view returns (uint256 totalFees_, uint256 totalBP_) { (totalFees_, totalBP_) = LibFeeRouter._calculateTradingFees(_buyerId, _sellToken, _buyToken, _buyAmount); } function getMakerBP() external view returns (uint16) { return LibFeeRouter._getMakerBP(); } + + /** + * @notice Get the minimum amount of tokens that can be sold on the market. + * @param _objectId ID of the object (Par token or external token) + */ + function objectMinimumSell(bytes32 _objectId) external view returns (uint256) { + return LibMarket._objectMinimumSell(_objectId); + } + + /** + * @notice Set the minimum amount of tokens that can be sold on the market. + * @param _objectId ID of the object (Par token or external token) + * @param _minimumSell The minimum amount of tokens that can be sold on the market. + */ + function setMinimumSell(bytes32 _objectId, uint256 _minimumSell) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_MANAGERS) { + LibMarket._setMinimumSell(_objectId, _minimumSell); + } } diff --git a/src/facets/NaymsOwnershipFacet.sol b/src/facets/NaymsOwnershipFacet.sol new file mode 100644 index 00000000..d11a3962 --- /dev/null +++ b/src/facets/NaymsOwnershipFacet.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { LibDiamond } from "lib/diamond-2-hardhat/contracts/libraries/LibDiamond.sol"; +import { IERC173 } from "lib/diamond-2-hardhat/contracts/interfaces/IERC173.sol"; +import { LibACL } from "src/libs/LibACL.sol"; +import { LibHelpers } from "src/libs/LibHelpers.sol"; +import { LibAdmin } from "src/libs/LibAdmin.sol"; +import { LibConstants as LC } from "src/libs/LibConstants.sol"; +import { Modifiers } from "src/shared/Modifiers.sol"; + +contract NaymsOwnershipFacet is IERC173, Modifiers { + function transferOwnership(address _newOwner) external override assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { + bytes32 systemID = LibHelpers._stringToBytes32(LC.SYSTEM_IDENTIFIER); + bytes32 newAcc1Id = LibHelpers._getIdForAddress(_newOwner); + + require(!LibACL._isInGroup(newAcc1Id, systemID, LibHelpers._stringToBytes32(LC.GROUP_SYSTEM_ADMINS)), "NEW owner MUST NOT be sys admin"); + require(!LibACL._isInGroup(newAcc1Id, systemID, LibHelpers._stringToBytes32(LC.GROUP_SYSTEM_MANAGERS)), "NEW owner MUST NOT be sys manager"); + + LibDiamond.setContractOwner(_newOwner); + } + + function owner() external view override returns (address owner_) { + owner_ = LibDiamond.contractOwner(); + } +} diff --git a/src/diamonds/nayms/facets/NaymsTokenFacet.sol b/src/facets/NaymsTokenFacet.sol similarity index 83% rename from src/diamonds/nayms/facets/NaymsTokenFacet.sol rename to src/facets/NaymsTokenFacet.sol index e39fcf78..22ba2982 100644 --- a/src/diamonds/nayms/facets/NaymsTokenFacet.sol +++ b/src/facets/NaymsTokenFacet.sol @@ -1,7 +1,6 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { INaymsTokenFacet } from "../interfaces/INaymsTokenFacet.sol"; import { LibNaymsToken } from "../libs/LibNaymsToken.sol"; /** @@ -9,7 +8,7 @@ import { LibNaymsToken } from "../libs/LibNaymsToken.sol"; * @notice Use it to access and manipulate Nayms token. * @dev Use it to access and manipulate Nayms token. */ -contract NaymsTokenFacet is INaymsTokenFacet { +contract NaymsTokenFacet { /** * @dev Get total supply of token. * @return total supply. diff --git a/src/diamonds/shared/facets/PhasedDiamondCutFacet.sol b/src/facets/PhasedDiamondCutFacet.sol similarity index 84% rename from src/diamonds/shared/facets/PhasedDiamondCutFacet.sol rename to src/facets/PhasedDiamondCutFacet.sol index 3d681259..be1f544c 100644 --- a/src/diamonds/shared/facets/PhasedDiamondCutFacet.sol +++ b/src/facets/PhasedDiamondCutFacet.sol @@ -1,14 +1,15 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /******************************************************************************\ * Author: Nick Mudge (https://twitter.com/mudgen) * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ -import { IDiamondCut } from "../interfaces/IDiamondCut.sol"; -import { LibDiamond } from "../libs/LibDiamond.sol"; -import { AppStorage, LibAppStorage } from "src/diamonds/nayms/AppStorage.sol"; +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; +import { LibDiamond } from "lib/diamond-2-hardhat/contracts/libraries/LibDiamond.sol"; +import { AppStorage, LibAppStorage } from "src/shared/AppStorage.sol"; +import { LibGovernance } from "src/libs/LibGovernance.sol"; error PhasedDiamondCutUpgradeFailed(bytes32 upgradeId, uint256 blockTimestamp); @@ -19,15 +20,11 @@ contract PhasedDiamondCutFacet is IDiamondCut { /// @param _init The address of the contract or facet to execute _calldata /// @param _calldata A function call, including function selector and arguments /// _calldata is executed with delegatecall on _init - function diamondCut( - FacetCut[] calldata _diamondCut, - address _init, - bytes calldata _calldata - ) external override { + function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external override { { AppStorage storage s = LibAppStorage.diamondStorage(); - bytes32 upgradeId = keccak256(abi.encode(_diamondCut, _init, _calldata)); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(_diamondCut, _init, _calldata); if (s.upgradeScheduled[upgradeId] < block.timestamp) { revert PhasedDiamondCutUpgradeFailed(upgradeId, block.timestamp); } diff --git a/src/diamonds/nayms/facets/SimplePolicyFacet.sol b/src/facets/SimplePolicyFacet.sol similarity index 91% rename from src/diamonds/nayms/facets/SimplePolicyFacet.sol rename to src/facets/SimplePolicyFacet.sol index 6ccbc26c..3311a524 100644 --- a/src/diamonds/nayms/facets/SimplePolicyFacet.sol +++ b/src/facets/SimplePolicyFacet.sol @@ -1,22 +1,21 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { Modifiers } from "../Modifiers.sol"; -import { SimplePolicyInfo, SimplePolicy, CalculatedFees } from "../AppStorage.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; +import { SimplePolicyInfo, SimplePolicy, CalculatedFees } from "../shared/AppStorage.sol"; +import { LibAdmin } from "../libs/LibAdmin.sol"; import { LibObject } from "../libs/LibObject.sol"; import { LibHelpers } from "../libs/LibHelpers.sol"; import { LibSimplePolicy } from "../libs/LibSimplePolicy.sol"; import { LibFeeRouter } from "../libs/LibFeeRouter.sol"; -import { ISimplePolicyFacet } from "../interfaces/ISimplePolicyFacet.sol"; import { LibConstants as LC } from "../libs/LibConstants.sol"; -import { LibAdmin } from "../libs/LibAdmin.sol"; /** * @title Simple Policies * @notice Facet for working with Simple Policies * @dev Simple Policy facet */ -contract SimplePolicyFacet is ISimplePolicyFacet, Modifiers { +contract SimplePolicyFacet is Modifiers { /** * @dev Pay a premium of `_amount` on simple policy * @param _policyId Id of the simple policy @@ -98,13 +97,7 @@ contract SimplePolicyFacet is ISimplePolicyFacet, Modifiers { * @param _offchainDataHash Hash of all the important policy data stored offchain * @return signingHash_ hash for signing */ - function getSigningHash( - uint256 _startDate, - uint256 _maturationDate, - bytes32 _asset, - uint256 _limit, - bytes32 _offchainDataHash - ) external view returns (bytes32 signingHash_) { + function getSigningHash(uint256 _startDate, uint256 _maturationDate, bytes32 _asset, uint256 _limit, bytes32 _offchainDataHash) external view returns (bytes32 signingHash_) { signingHash_ = LibSimplePolicy._getSigningHash(_startDate, _maturationDate, _asset, _limit, _offchainDataHash); } diff --git a/src/diamonds/nayms/facets/SystemFacet.sol b/src/facets/SystemFacet.sol similarity index 67% rename from src/diamonds/nayms/facets/SystemFacet.sol rename to src/facets/SystemFacet.sol index 019c92aa..471b17c3 100644 --- a/src/diamonds/nayms/facets/SystemFacet.sol +++ b/src/facets/SystemFacet.sol @@ -1,22 +1,21 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { LibConstants as LC } from "../libs/LibConstants.sol"; -import { Modifiers } from "../Modifiers.sol"; -import { Entity } from "../AppStorage.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; +import { Entity } from "../shared/AppStorage.sol"; import { LibAdmin } from "../libs/LibAdmin.sol"; import { LibHelpers } from "../libs/LibHelpers.sol"; import { LibObject } from "../libs/LibObject.sol"; import { LibEntity } from "../libs/LibEntity.sol"; -import { ISystemFacet } from "../interfaces/ISystemFacet.sol"; -import { ReentrancyGuard } from "../../../utils/ReentrancyGuard.sol"; +import { ReentrancyGuard } from "../utils/ReentrancyGuard.sol"; /** * @title System * @notice Use it to perform system level operations * @dev Use it to perform system level operations */ -contract SystemFacet is ISystemFacet, Modifiers, ReentrancyGuard { +contract SystemFacet is Modifiers, ReentrancyGuard { /** * @notice Create an entity * @dev An entity can be created with a zero max capacity! This is in the event where an entity cannot write any policies. @@ -61,17 +60,7 @@ contract SystemFacet is ISystemFacet, Modifiers, ReentrancyGuard { * @return tokenName object token name * @return tokenWrapper object token ERC20 wrapper address */ - function getObjectMeta(bytes32 _id) - external - view - returns ( - bytes32 parent, - bytes32 dataHash, - string memory tokenSymbol, - string memory tokenName, - address tokenWrapper - ) - { + function getObjectMeta(bytes32 _id) external view returns (bytes32 parent, bytes32 dataHash, string memory tokenSymbol, string memory tokenName, address tokenWrapper) { return LibObject._getObjectMeta(_id); } @@ -82,4 +71,23 @@ contract SystemFacet is ISystemFacet, Modifiers, ReentrancyGuard { function wrapToken(bytes32 _objectId) external nonReentrant assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { LibObject._wrapToken(_objectId); } + + /** + * @notice Returns the object's type + * @dev An object's type is the most significant 12 bytes of its bytes32 ID + * @param _objectId ID of the object + */ + function getObjectType(bytes32 _objectId) external pure returns (bytes12) { + return LibObject._getObjectType(_objectId); + } + + /** + * @notice Check to see if an object is of a given type + * @param _objectId ID of the object + * @param _objectType The object type to check against + * @return true if the object is of the given type, false otherwise + */ + function isObjectType(bytes32 _objectId, bytes12 _objectType) external pure returns (bool) { + return LibObject._isObjectType(_objectId, _objectType); + } } diff --git a/src/diamonds/nayms/facets/TokenizedVaultFacet.sol b/src/facets/TokenizedVaultFacet.sol similarity index 77% rename from src/diamonds/nayms/facets/TokenizedVaultFacet.sol rename to src/facets/TokenizedVaultFacet.sol index eef14bef..425c0764 100644 --- a/src/diamonds/nayms/facets/TokenizedVaultFacet.sol +++ b/src/facets/TokenizedVaultFacet.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { Modifiers } from "../Modifiers.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; import { LibConstants as LC } from "../libs/LibConstants.sol"; +import { LibHelpers } from "../libs/LibHelpers.sol"; import { LibTokenizedVault } from "../libs/LibTokenizedVault.sol"; import { LibObject } from "../libs/LibObject.sol"; import { LibEntity } from "../libs/LibEntity.sol"; -import { ITokenizedVaultFacet } from "../interfaces/ITokenizedVaultFacet.sol"; -import { ReentrancyGuard } from "../../../utils/ReentrancyGuard.sol"; import { LibAdmin } from "../libs/LibAdmin.sol"; +import { ReentrancyGuard } from "../utils/ReentrancyGuard.sol"; /** * @title Token Vault @@ -17,7 +17,7 @@ import { LibAdmin } from "../libs/LibAdmin.sol"; * @dev Adaptation of ERC-1155 that uses AppStorage and aligns with Nayms ACL implementation. * https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC1155 */ -contract TokenizedVaultFacet is ITokenizedVaultFacet, Modifiers, ReentrancyGuard { +contract TokenizedVaultFacet is Modifiers, ReentrancyGuard { /** * @notice Gets balance of an account within platform * @dev Internal balance for given account @@ -46,11 +46,7 @@ contract TokenizedVaultFacet is ITokenizedVaultFacet, Modifiers, ReentrancyGuard * @param tokenId Internal ID of the token * @param amount being transferred */ - function internalTransferFromEntity( - bytes32 to, - bytes32 tokenId, - uint256 amount - ) external notLocked(msg.sig) nonReentrant { + function internalTransferFromEntity(bytes32 to, bytes32 tokenId, uint256 amount) external notLocked(msg.sig) nonReentrant { bytes32 senderEntityId = LibObject._getParentFromAddress(msg.sender); LibTokenizedVault._internalTransfer(senderEntityId, to, tokenId, amount); } @@ -63,20 +59,11 @@ contract TokenizedVaultFacet is ITokenizedVaultFacet, Modifiers, ReentrancyGuard * @param tokenId Internal ID of the token * @param amount being transferred */ - function wrapperInternalTransferFrom( - bytes32 from, - bytes32 to, - bytes32 tokenId, - uint256 amount - ) external notLocked(msg.sig) nonReentrant assertERC20Wrapper(tokenId) { + function wrapperInternalTransferFrom(bytes32 from, bytes32 to, bytes32 tokenId, uint256 amount) external notLocked(msg.sig) nonReentrant assertERC20Wrapper(tokenId) { LibTokenizedVault._internalTransfer(from, to, tokenId, amount); } - function internalBurn( - bytes32 from, - bytes32 tokenId, - uint256 amount - ) external notLocked(msg.sig) assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { + function internalBurn(bytes32 from, bytes32 tokenId, uint256 amount) external notLocked(msg.sig) assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { LibTokenizedVault._internalBurn(from, tokenId, amount); } @@ -88,11 +75,7 @@ contract TokenizedVaultFacet is ITokenizedVaultFacet, Modifiers, ReentrancyGuard * @param dividendTokenId Unique ID of dividend token * @return _entityPayout accumulated dividend */ - function getWithdrawableDividend( - bytes32 ownerId, - bytes32 tokenId, - bytes32 dividendTokenId - ) external view returns (uint256) { + function getWithdrawableDividend(bytes32 ownerId, bytes32 tokenId, bytes32 dividendTokenId) external view returns (uint256) { return LibTokenizedVault._getWithdrawableDividend(ownerId, tokenId, dividendTokenId); } @@ -103,11 +86,7 @@ contract TokenizedVaultFacet is ITokenizedVaultFacet, Modifiers, ReentrancyGuard * @param tokenId Unique ID of token * @param dividendTokenId Unique ID of dividend token */ - function withdrawDividend( - bytes32 ownerId, - bytes32 tokenId, - bytes32 dividendTokenId - ) external notLocked(msg.sig) { + function withdrawDividend(bytes32 ownerId, bytes32 tokenId, bytes32 dividendTokenId) external notLocked(msg.sig) { LibTokenizedVault._withdrawDividend(ownerId, tokenId, dividendTokenId); } @@ -127,11 +106,10 @@ contract TokenizedVaultFacet is ITokenizedVaultFacet, Modifiers, ReentrancyGuard * @param guid Globally unique identifier of a dividend distribution. * @param amount the amount of the dividend token to be distributed to NAYMS token holders. */ - function payDividendFromEntity(bytes32 guid, uint256 amount) - external - notLocked(msg.sig) - assertPrivilege(LibObject._getParentFromAddress(msg.sender), LC.GROUP_PAY_DIVIDEND_FROM_ENTITY) - { + function payDividendFromEntity( + bytes32 guid, + uint256 amount + ) external notLocked(msg.sig) assertPrivilege(LibObject._getParentFromAddress(msg.sender), LC.GROUP_PAY_DIVIDEND_FROM_ENTITY) { bytes32 entityId = LibObject._getParentFromAddress(msg.sender); bytes32 dividendTokenId = LibEntity._getEntityInfo(entityId).assetId; @@ -167,4 +145,13 @@ contract TokenizedVaultFacet is ITokenizedVaultFacet, Modifiers, ReentrancyGuard ) external assertPrivilege(LibAdmin._getSystemId(), LC.GROUP_SYSTEM_ADMINS) { LibTokenizedVault._internalTransfer(_fromEntityId, _toEntityId, _tokenId, _amount); } + + /** + * @notice Get the total amount of dividends paid to a cell. + * @param _tokenId The entity ID of the cell. In otherwords, the participation token ID. + * @param _dividendDenominationId The ID of the dividend token that the dividends were paid in. + */ + function totalDividends(bytes32 _tokenId, bytes32 _dividendDenominationId) external view returns (uint256) { + return LibTokenizedVault._totalDividends(_tokenId, _dividendDenominationId); + } } diff --git a/src/diamonds/nayms/facets/TokenizedVaultIOFacet.sol b/src/facets/TokenizedVaultIOFacet.sol similarity index 79% rename from src/diamonds/nayms/facets/TokenizedVaultIOFacet.sol rename to src/facets/TokenizedVaultIOFacet.sol index 1942314f..b0f55587 100644 --- a/src/diamonds/nayms/facets/TokenizedVaultIOFacet.sol +++ b/src/facets/TokenizedVaultIOFacet.sol @@ -1,17 +1,16 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { Modifiers } from "../Modifiers.sol"; +import { Modifiers } from "../shared/Modifiers.sol"; import { LibTokenizedVaultIO } from "../libs/LibTokenizedVaultIO.sol"; import { LibEntity } from "../libs/LibEntity.sol"; import { LibAdmin } from "../libs/LibAdmin.sol"; import { LibObject } from "../libs/LibObject.sol"; -import { ReentrancyGuard } from "../../../utils/ReentrancyGuard.sol"; -import { ITokenizedVaultIOFacet } from "../interfaces/ITokenizedVaultIOFacet.sol"; import { LibConstants as LC } from "../libs/LibConstants.sol"; import { LibACL } from "../libs/LibACL.sol"; import { LibHelpers } from "../libs/LibHelpers.sol"; -import { ExternalWithdrawInvalidReceiver } from "../interfaces/CustomErrors.sol"; +import { ExternalWithdrawInvalidReceiver } from "../shared/CustomErrors.sol"; +import { ReentrancyGuard } from "../utils/ReentrancyGuard.sol"; /** * @title Token Vault IO @@ -19,19 +18,17 @@ import { ExternalWithdrawInvalidReceiver } from "../interfaces/CustomErrors.sol" * @dev Used for external transfers. Adaptation of ERC-1155 that uses AppStorage and aligns with Nayms ACL implementation. * https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC1155 */ -contract TokenizedVaultIOFacet is ITokenizedVaultIOFacet, Modifiers, ReentrancyGuard { +contract TokenizedVaultIOFacet is Modifiers, ReentrancyGuard { /** * @notice Deposit funds into msg.sender's Nayms platform entity * @dev Deposit from msg.sender to their associated entity * @param _externalTokenAddress Token address * @param _amount deposit amount */ - function externalDeposit(address _externalTokenAddress, uint256 _amount) - external - notLocked(msg.sig) - nonReentrant - assertPrivilege(LibObject._getParentFromAddress(msg.sender), LC.GROUP_EXTERNAL_DEPOSIT) - { + function externalDeposit( + address _externalTokenAddress, + uint256 _amount + ) external notLocked(msg.sig) nonReentrant assertPrivilege(LibObject._getParentFromAddress(msg.sender), LC.GROUP_EXTERNAL_DEPOSIT) { // a user can only deposit an approved external ERC20 token require(LibAdmin._isSupportedExternalTokenAddress(_externalTokenAddress), "extDeposit: invalid ERC20 token"); // a user can only deposit to their valid entity diff --git a/src/diamonds/nayms/facets/UserFacet.sol b/src/facets/UserFacet.sol similarity index 87% rename from src/diamonds/nayms/facets/UserFacet.sol rename to src/facets/UserFacet.sol index 0d07df3b..1b63d424 100644 --- a/src/diamonds/nayms/facets/UserFacet.sol +++ b/src/facets/UserFacet.sol @@ -1,14 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; +import { Modifiers } from "../shared/Modifiers.sol"; import { LibConstants as LC } from "../libs/LibConstants.sol"; -import { Modifiers } from "../Modifiers.sol"; import { LibAdmin } from "../libs/LibAdmin.sol"; import { LibHelpers } from "../libs/LibHelpers.sol"; import { LibObject } from "../libs/LibObject.sol"; -import { LibEntity } from "src/diamonds/nayms/libs/LibEntity.sol"; -import { EntityDoesNotExist } from "src/diamonds/nayms/interfaces/CustomErrors.sol"; -import { IUserFacet } from "../interfaces/IUserFacet.sol"; +import { LibEntity } from "src/libs/LibEntity.sol"; +import { EntityDoesNotExist } from "src/shared/CustomErrors.sol"; /** * @title Users @@ -16,7 +15,7 @@ import { IUserFacet } from "../interfaces/IUserFacet.sol"; * @dev This contract includes functions to set and get user-entity relationships, * and to convert wallet addresses to platform IDs and vice versa. */ -contract UserFacet is IUserFacet, Modifiers { +contract UserFacet is Modifiers { /** * @notice Get the platform ID of `addr` account * @dev Convert address to platform ID diff --git a/src/generated/.gitignore b/src/generated/.gitignore new file mode 100644 index 00000000..d749133c --- /dev/null +++ b/src/generated/.gitignore @@ -0,0 +1,3 @@ +*.json +*.sol +*.log \ No newline at end of file diff --git a/src/init/InitDiamond.sol b/src/init/InitDiamond.sol new file mode 100644 index 00000000..6fbb9b7f --- /dev/null +++ b/src/init/InitDiamond.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; +import { IDiamondLoupe } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondLoupe.sol"; +import { LibDiamond } from "lib/diamond-2-hardhat/contracts/libraries/LibDiamond.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; +import { LibHelpers } from "../libs/LibHelpers.sol"; +import { LibConstants } from "../libs/LibConstants.sol"; +import { LibAdmin } from "../libs/LibAdmin.sol"; +import { LibACL } from "../libs/LibACL.sol"; +import { LibInitDiamond } from "../libs/LibInitDiamond.sol"; +import { LibEIP712 } from "../libs/LibEIP712.sol"; +import { IERC165 } from "../interfaces/IERC165.sol"; +import { IERC173 } from "../interfaces/IERC173.sol"; +import { IERC20 } from "../interfaces/IERC20.sol"; +import { FeeSchedule } from "../shared/FreeStructs.sol"; + +error DiamondAlreadyInitialized(); + +contract InitDiamond { + event InitializeDiamond(address sender); + + function init(address _systemAdmin) external { + AppStorage storage s = LibAppStorage.diamondStorage(); + if (s.diamondInitialized) { + revert DiamondAlreadyInitialized(); + } + + // ERC20 + s.name = "Nayms"; + s.totalSupply = 100_000_000e18; + s.balances[msg.sender] = s.totalSupply; + + // EIP712 domain separator + s.initialChainId = block.chainid; + s.initialDomainSeparator = LibEIP712._computeDomainSeparator(); + + // disallow creating an object with ID of 0 + s.existingObjects[0] = true; + + // Set Commissions (all are in basis points) + bytes32[] memory receiver = new bytes32[](1); + receiver[0] = LibHelpers._stringToBytes32(LibConstants.NAYMS_LTD_IDENTIFIER); + + uint16[] memory premiumBP = new uint16[](1); + premiumBP[0] = 300; + uint16[] memory tradingBP = new uint16[](1); + tradingBP[0] = 30; + uint16[] memory initSaleBP = new uint16[](1); + initSaleBP[0] = 100; + + s.feeSchedules[LibConstants.DEFAULT_FEE_SCHEDULE][LibConstants.FEE_TYPE_PREMIUM] = FeeSchedule({ receiver: receiver, basisPoints: premiumBP }); + s.feeSchedules[LibConstants.DEFAULT_FEE_SCHEDULE][LibConstants.FEE_TYPE_TRADING] = FeeSchedule({ receiver: receiver, basisPoints: tradingBP }); + s.feeSchedules[LibConstants.DEFAULT_FEE_SCHEDULE][LibConstants.FEE_TYPE_INITIAL_SALE] = FeeSchedule({ receiver: receiver, basisPoints: initSaleBP }); + + s.naymsTokenId = LibHelpers._getIdForAddress(address(this)); + s.naymsToken = address(this); + s.maxDividendDenominations = 1; + + // adding ERC165 data + LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); + ds.supportedInterfaces[type(IERC165).interfaceId] = true; + ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true; + ds.supportedInterfaces[type(IDiamondLoupe).interfaceId] = true; + ds.supportedInterfaces[type(IERC173).interfaceId] = true; + ds.supportedInterfaces[type(IERC20).interfaceId] = true; + + LibInitDiamond.setRoleGroupsAndAssigners(); + LibInitDiamond.setUpgradeExpiration(); + LibInitDiamond.setSystemAdmin(_systemAdmin); + + s.diamondInitialized = true; + + emit InitializeDiamond(msg.sender); + } +} diff --git a/src/utils/OneOff360InitDiamond.sol b/src/init/OneOff360InitDiamond.sol similarity index 94% rename from src/utils/OneOff360InitDiamond.sol rename to src/init/OneOff360InitDiamond.sol index cf5e5c4b..b313e0a9 100644 --- a/src/utils/OneOff360InitDiamond.sol +++ b/src/init/OneOff360InitDiamond.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../diamonds/nayms/AppStorage.sol"; -import { LibHelpers } from "../diamonds/nayms/libs/LibHelpers.sol"; -import { LibConstants as LC } from "../diamonds/nayms/libs/LibConstants.sol"; -import { LibACL } from "../diamonds/nayms/libs/LibACL.sol"; -import { FeeSchedule, SimplePolicy } from "../diamonds/nayms/interfaces/FreeStructs.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; +import { LibHelpers } from "../libs/LibHelpers.sol"; +import { LibConstants as LC } from "../libs/LibConstants.sol"; +import { LibACL } from "../libs/LibACL.sol"; +import { FeeSchedule, SimplePolicy } from "../shared/FreeStructs.sol"; // solhint-disable no-console import { console2 as console } from "forge-std/console2.sol"; diff --git a/src/diamonds/shared/interfaces/IERC165.sol b/src/interfaces/IERC165.sol similarity index 95% rename from src/diamonds/shared/interfaces/IERC165.sol rename to src/interfaces/IERC165.sol index 64b099d3..d1d345e1 100644 --- a/src/diamonds/shared/interfaces/IERC165.sol +++ b/src/interfaces/IERC165.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; interface IERC165 { /// @notice Query if a contract implements an interface diff --git a/src/diamonds/shared/interfaces/IERC173.sol b/src/interfaces/IERC173.sol similarity index 96% rename from src/diamonds/shared/interfaces/IERC173.sol rename to src/interfaces/IERC173.sol index 47e48a70..4f62a7bb 100644 --- a/src/diamonds/shared/interfaces/IERC173.sol +++ b/src/interfaces/IERC173.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /// @title ERC-173 Contract Ownership Standard /// Note: the ERC-165 identifier for this interface is 0x7f5828d0 is ERC165 diff --git a/src/erc20/IERC20.sol b/src/interfaces/IERC20.sol similarity index 72% rename from src/erc20/IERC20.sol rename to src/interfaces/IERC20.sol index d908c76b..ed74e601 100644 --- a/src/erc20/IERC20.sol +++ b/src/interfaces/IERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /** * See https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20 @@ -21,21 +21,9 @@ interface IERC20 { function approve(address spender, uint256 value) external returns (bool); - function transferFrom( - address from, - address to, - uint256 value - ) external returns (bool); - - function permit( - address owner, - address spender, - uint256 value, - uint256 deadline, - uint8 v, - bytes32 r, - bytes32 s - ) external; + function transferFrom(address from, address to, uint256 value) external returns (bool); + + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; event Transfer(address indexed from, address indexed to, uint256 value); diff --git a/src/diamonds/nayms/libs/LibACL.sol b/src/libs/LibACL.sol similarity index 85% rename from src/diamonds/nayms/libs/LibACL.sol rename to src/libs/LibACL.sol index 5a7bbf06..c4de20b6 100644 --- a/src/diamonds/nayms/libs/LibACL.sol +++ b/src/libs/LibACL.sol @@ -1,13 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; -import { LibDiamond } from "src/diamonds/shared/libs/LibDiamond.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; +import { LibDiamond } from "lib/diamond-2-hardhat/contracts/libraries/LibDiamond.sol"; import { LibHelpers } from "./LibHelpers.sol"; import { LibAdmin } from "./LibAdmin.sol"; import { LibObject } from "./LibObject.sol"; import { LibConstants } from "./LibConstants.sol"; -import { OwnerCannotBeSystemAdmin, RoleIsMissing, AssignerGroupIsMissing } from "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { OwnerCannotBeSystemAdmin, RoleIsMissing, AssignerGroupIsMissing } from "../shared/CustomErrors.sol"; library LibACL { /** @@ -32,11 +32,7 @@ library LibACL { */ event RoleCanAssignUpdated(string role, string group); - function _assignRole( - bytes32 _objectId, - bytes32 _contextId, - bytes32 _roleId - ) internal { + function _assignRole(bytes32 _objectId, bytes32 _contextId, bytes32 _roleId) internal { AppStorage storage s = LibAppStorage.diamondStorage(); require(_objectId != "", "invalid object ID"); require(_contextId != "", "invalid context ID"); @@ -51,7 +47,7 @@ library LibACL { } if (_contextId == LibAdmin._getSystemId() && _roleId == LibHelpers._stringToBytes32(LibConstants.ROLE_SYSTEM_ADMIN)) { - if (LibDiamond.contractOwner() == LibHelpers._getAddressFromId(_objectId)) { + if (LibHelpers._isAddress(_objectId) && LibDiamond.contractOwner() == LibHelpers._getAddressFromId(_objectId)) { revert OwnerCannotBeSystemAdmin(); } else { unchecked { @@ -81,11 +77,7 @@ library LibACL { } /// @dev _isInGroup no longer falls back to check the _objectId's role in the system context - function _isInGroup( - bytes32 _objectId, - bytes32 _contextId, - bytes32 _groupId - ) internal view returns (bool ret) { + function _isInGroup(bytes32 _objectId, bytes32 _contextId, bytes32 _groupId) internal view returns (bool ret) { AppStorage storage s = LibAppStorage.diamondStorage(); // Check for the role in the context @@ -95,11 +87,7 @@ library LibACL { return false; } - function _isParentInGroup( - bytes32 _objectId, - bytes32 _contextId, - bytes32 _groupId - ) internal view returns (bool) { + function _isParentInGroup(bytes32 _objectId, bytes32 _contextId, bytes32 _groupId) internal view returns (bool) { bytes32 parentId = LibObject._getParent(_objectId); return _isInGroup(parentId, _contextId, _groupId); } @@ -113,12 +101,7 @@ library LibACL { * @param _roleId ID of a role being assigned * @return true if allowed false otherwise */ - function _canAssign( - bytes32 _assignerId, - bytes32 _objectId, - bytes32 _contextId, - bytes32 _roleId - ) internal view returns (bool) { + function _canAssign(bytes32 _assignerId, bytes32 _objectId, bytes32 _contextId, bytes32 _roleId) internal view returns (bool) { // we might impose additional restrictions on _objectId in the future require(_objectId != "", "invalid object ID"); @@ -135,11 +118,7 @@ library LibACL { return false; } - function _hasGroupPrivilege( - bytes32 _userId, - bytes32 _contextId, - bytes32 _groupId - ) internal view returns (bool) { + function _hasGroupPrivilege(bytes32 _userId, bytes32 _contextId, bytes32 _groupId) internal view returns (bool) { if (_isParentInGroup(_userId, _contextId, _groupId)) return true; if (_isInGroup(_userId, _contextId, _groupId)) return true; if (_isInGroup(_userId, LibAdmin._getSystemId(), _groupId)) return true; @@ -173,11 +152,7 @@ library LibACL { emit RoleCanAssignUpdated(_role, _assignerGroup); } - function _updateRoleGroup( - string memory _role, - string memory _group, - bool _roleInGroup - ) internal { + function _updateRoleGroup(string memory _role, string memory _group, bool _roleInGroup) internal { AppStorage storage s = LibAppStorage.diamondStorage(); if (bytes32(bytes(_role)) == "") { revert RoleIsMissing(); diff --git a/src/libs/LibAdmin.sol b/src/libs/LibAdmin.sol new file mode 100644 index 00000000..cfa8f127 --- /dev/null +++ b/src/libs/LibAdmin.sol @@ -0,0 +1,179 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { AppStorage, FunctionLockedStorage, LibAppStorage } from "../shared/AppStorage.sol"; +import { LibConstants as LC } from "./LibConstants.sol"; +import { LibHelpers } from "./LibHelpers.sol"; +import { LibObject } from "./LibObject.sol"; +import { LibERC20 } from "./LibERC20.sol"; + +import { CannotAddNullDiscountToken, CannotAddNullSupportedExternalToken, CannotSupportExternalTokenWithMoreThan18Decimals, ObjectTokenSymbolAlreadyInUse, MinimumSellCannotBeZero } from "../shared/CustomErrors.sol"; + +import { IDiamondProxy } from "src/generated/IDiamondProxy.sol"; + +library LibAdmin { + event MaxDividendDenominationsUpdated(uint8 oldMax, uint8 newMax); + event SupportedTokenAdded(address indexed tokenAddress); + event FunctionsLocked(bytes4[] functionSelectors); + event FunctionsUnlocked(bytes4[] functionSelectors); + event ObjectMinimumSellUpdated(bytes32 objectId, uint256 newMinimumSell); + + function _getSystemId() internal pure returns (bytes32) { + return LibHelpers._stringToBytes32(LC.SYSTEM_IDENTIFIER); + } + + function _getEmptyId() internal pure returns (bytes32) { + return LibHelpers._stringToBytes32(LC.EMPTY_IDENTIFIER); + } + + function _updateMaxDividendDenominations(uint8 _newMaxDividendDenominations) internal { + AppStorage storage s = LibAppStorage.diamondStorage(); + uint8 old = s.maxDividendDenominations; + require(_newMaxDividendDenominations > old, "_updateMaxDividendDenominations: cannot reduce"); + s.maxDividendDenominations = _newMaxDividendDenominations; + + emit MaxDividendDenominationsUpdated(old, _newMaxDividendDenominations); + } + + function _getMaxDividendDenominations() internal view returns (uint8) { + AppStorage storage s = LibAppStorage.diamondStorage(); + return s.maxDividendDenominations; + } + + function _isSupportedExternalTokenAddress(address _tokenId) internal view returns (bool) { + AppStorage storage s = LibAppStorage.diamondStorage(); + return s.externalTokenSupported[_tokenId]; + } + + function _isSupportedExternalToken(bytes32 _tokenId) internal view returns (bool) { + AppStorage storage s = LibAppStorage.diamondStorage(); + return LibHelpers._isAddress(_tokenId) && s.externalTokenSupported[LibHelpers._getAddressFromId(_tokenId)]; + } + + function _addSupportedExternalToken(address _tokenAddress, uint256 _minimumSell) internal { + if (LibERC20.decimals(_tokenAddress) > 18) { + revert CannotSupportExternalTokenWithMoreThan18Decimals(); + } + AppStorage storage s = LibAppStorage.diamondStorage(); + require(!s.externalTokenSupported[_tokenAddress], "external token already added"); + require(s.objectTokenWrapperId[_tokenAddress] == bytes32(0), "cannot add participation token wrapper as external"); + + if (_minimumSell == 0) revert MinimumSellCannotBeZero(); + + string memory symbol = LibERC20.symbol(_tokenAddress); + if (s.tokenSymbolObjectId[symbol] != bytes32(0)) { + revert ObjectTokenSymbolAlreadyInUse(LibHelpers._getIdForAddress(_tokenAddress), symbol); + } + + s.externalTokenSupported[_tokenAddress] = true; + bytes32 tokenId = LibHelpers._getIdForAddress(_tokenAddress); + LibObject._createObject(tokenId, LC.OBJECT_TYPE_ADDRESS); + s.supportedExternalTokens.push(_tokenAddress); + s.tokenSymbolObjectId[symbol] = tokenId; + s.objectMinimumSell[tokenId] = _minimumSell; + + emit SupportedTokenAdded(_tokenAddress); + } + + function _getSupportedExternalTokens() internal view returns (address[] memory) { + AppStorage storage s = LibAppStorage.diamondStorage(); + + // Supported tokens cannot be removed because they may exist in the system! + return s.supportedExternalTokens; + } + + function _lockFunction(bytes4 functionSelector) internal { + FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); + s.locked[functionSelector] = true; + + bytes4[] memory functionSelectors = new bytes4[](1); + functionSelectors[0] = functionSelector; + emit FunctionsLocked(functionSelectors); + } + + function _unlockFunction(bytes4 functionSelector) internal { + FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); + s.locked[functionSelector] = false; + + bytes4[] memory functionSelectors = new bytes4[](1); + functionSelectors[0] = functionSelector; + emit FunctionsUnlocked(functionSelectors); + } + + function _isFunctionLocked(bytes4 functionSelector) internal view returns (bool) { + FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); + return s.locked[functionSelector]; + } + + function _lockAllFundTransferFunctions() internal { + FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); + s.locked[IDiamondProxy.startTokenSale.selector] = true; + s.locked[IDiamondProxy.paySimpleClaim.selector] = true; + s.locked[IDiamondProxy.paySimplePremium.selector] = true; + s.locked[IDiamondProxy.checkAndUpdateSimplePolicyState.selector] = true; + s.locked[IDiamondProxy.cancelOffer.selector] = true; + s.locked[IDiamondProxy.executeLimitOffer.selector] = true; + s.locked[IDiamondProxy.internalTransferFromEntity.selector] = true; + s.locked[IDiamondProxy.payDividendFromEntity.selector] = true; + s.locked[IDiamondProxy.internalBurn.selector] = true; + s.locked[IDiamondProxy.wrapperInternalTransferFrom.selector] = true; + s.locked[IDiamondProxy.withdrawDividend.selector] = true; + s.locked[IDiamondProxy.withdrawAllDividends.selector] = true; + s.locked[IDiamondProxy.externalWithdrawFromEntity.selector] = true; + s.locked[IDiamondProxy.externalDeposit.selector] = true; + + bytes4[] memory lockedFunctions = new bytes4[](14); + lockedFunctions[0] = IDiamondProxy.startTokenSale.selector; + lockedFunctions[1] = IDiamondProxy.paySimpleClaim.selector; + lockedFunctions[2] = IDiamondProxy.paySimplePremium.selector; + lockedFunctions[3] = IDiamondProxy.checkAndUpdateSimplePolicyState.selector; + lockedFunctions[4] = IDiamondProxy.cancelOffer.selector; + lockedFunctions[5] = IDiamondProxy.executeLimitOffer.selector; + lockedFunctions[6] = IDiamondProxy.internalTransferFromEntity.selector; + lockedFunctions[7] = IDiamondProxy.payDividendFromEntity.selector; + lockedFunctions[8] = IDiamondProxy.internalBurn.selector; + lockedFunctions[9] = IDiamondProxy.wrapperInternalTransferFrom.selector; + lockedFunctions[10] = IDiamondProxy.withdrawDividend.selector; + lockedFunctions[11] = IDiamondProxy.withdrawAllDividends.selector; + lockedFunctions[12] = IDiamondProxy.externalWithdrawFromEntity.selector; + lockedFunctions[13] = IDiamondProxy.externalDeposit.selector; + + emit FunctionsLocked(lockedFunctions); + } + + function _unlockAllFundTransferFunctions() internal { + FunctionLockedStorage storage s = LibAppStorage.functionLockStorage(); + s.locked[IDiamondProxy.startTokenSale.selector] = false; + s.locked[IDiamondProxy.paySimpleClaim.selector] = false; + s.locked[IDiamondProxy.paySimplePremium.selector] = false; + s.locked[IDiamondProxy.checkAndUpdateSimplePolicyState.selector] = false; + s.locked[IDiamondProxy.cancelOffer.selector] = false; + s.locked[IDiamondProxy.executeLimitOffer.selector] = false; + s.locked[IDiamondProxy.internalTransferFromEntity.selector] = false; + s.locked[IDiamondProxy.payDividendFromEntity.selector] = false; + s.locked[IDiamondProxy.internalBurn.selector] = false; + s.locked[IDiamondProxy.wrapperInternalTransferFrom.selector] = false; + s.locked[IDiamondProxy.withdrawDividend.selector] = false; + s.locked[IDiamondProxy.withdrawAllDividends.selector] = false; + s.locked[IDiamondProxy.externalWithdrawFromEntity.selector] = false; + s.locked[IDiamondProxy.externalDeposit.selector] = false; + + bytes4[] memory lockedFunctions = new bytes4[](14); + lockedFunctions[0] = IDiamondProxy.startTokenSale.selector; + lockedFunctions[1] = IDiamondProxy.paySimpleClaim.selector; + lockedFunctions[2] = IDiamondProxy.paySimplePremium.selector; + lockedFunctions[3] = IDiamondProxy.checkAndUpdateSimplePolicyState.selector; + lockedFunctions[4] = IDiamondProxy.cancelOffer.selector; + lockedFunctions[5] = IDiamondProxy.executeLimitOffer.selector; + lockedFunctions[6] = IDiamondProxy.internalTransferFromEntity.selector; + lockedFunctions[7] = IDiamondProxy.payDividendFromEntity.selector; + lockedFunctions[8] = IDiamondProxy.internalBurn.selector; + lockedFunctions[9] = IDiamondProxy.wrapperInternalTransferFrom.selector; + lockedFunctions[10] = IDiamondProxy.withdrawDividend.selector; + lockedFunctions[11] = IDiamondProxy.withdrawAllDividends.selector; + lockedFunctions[12] = IDiamondProxy.externalWithdrawFromEntity.selector; + lockedFunctions[13] = IDiamondProxy.externalDeposit.selector; + + emit FunctionsUnlocked(lockedFunctions); + } +} diff --git a/src/diamonds/nayms/libs/LibConstants.sol b/src/libs/LibConstants.sol similarity index 91% rename from src/diamonds/nayms/libs/LibConstants.sol rename to src/libs/LibConstants.sol index bae86710..f8fb8251 100644 --- a/src/diamonds/nayms/libs/LibConstants.sol +++ b/src/libs/LibConstants.sol @@ -1,10 +1,21 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /** * @dev Settings keys. */ library LibConstants { + /// Object Types + bytes12 internal constant OBJECT_TYPE_ADDRESS = "ADDRESS"; + bytes12 internal constant OBJECT_TYPE_ENTITY = "ENTITY"; + bytes12 internal constant OBJECT_TYPE_POLICY = "POLICY"; + bytes12 internal constant OBJECT_TYPE_FEE = "FEE"; + bytes12 internal constant OBJECT_TYPE_CLAIM = "CLAIM"; + bytes12 internal constant OBJECT_TYPE_DIVIDEND = "DIVIDEND"; + bytes12 internal constant OBJECT_TYPE_PREMIUM = "PREMIUM"; + bytes12 internal constant OBJECT_TYPE_ROLE = "ROLE"; + bytes12 internal constant OBJECT_TYPE_GROUP = "GROUP"; + /// Reserved IDs string internal constant EMPTY_IDENTIFIER = ""; string internal constant SYSTEM_IDENTIFIER = "System"; diff --git a/src/diamonds/nayms/libs/LibEIP712.sol b/src/libs/LibEIP712.sol similarity index 76% rename from src/diamonds/nayms/libs/LibEIP712.sol rename to src/libs/LibEIP712.sol index 59f2a2e3..2a6a5943 100644 --- a/src/diamonds/nayms/libs/LibEIP712.sol +++ b/src/libs/LibEIP712.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; -import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import { MessageHashUtils } from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; library LibEIP712 { function _domainSeparatorV4() internal view returns (bytes32) { @@ -28,6 +28,6 @@ library LibEIP712 { } function _hashTypedDataV4(bytes32 structHash) internal view returns (bytes32) { - return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash); + return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash); } } diff --git a/src/erc20/LibERC20.sol b/src/libs/LibERC20.sol similarity index 90% rename from src/erc20/LibERC20.sol rename to src/libs/LibERC20.sol index e85d60e4..b3440a33 100644 --- a/src/erc20/LibERC20.sol +++ b/src/libs/LibERC20.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /******************************************************************************\ * Author: Nick Mudge * /******************************************************************************/ -import { IERC20 } from "./IERC20.sol"; +import { IERC20 } from "../interfaces/IERC20.sol"; library LibERC20 { function decimals(address _token) internal returns (uint8) { @@ -39,22 +39,13 @@ library LibERC20 { } } - function transferFrom( - address _token, - address _from, - address _to, - uint256 _value - ) internal { + function transferFrom(address _token, address _from, address _to, uint256 _value) internal { _assertNotEmptyContract(_token); (bool success, bytes memory result) = _token.call(abi.encodeWithSelector(IERC20.transferFrom.selector, _from, _to, _value)); handleReturn(success, result); } - function transfer( - address _token, - address _to, - uint256 _value - ) internal { + function transfer(address _token, address _to, uint256 _value) internal { _assertNotEmptyContract(_token); (bool success, bytes memory result) = _token.call(abi.encodeWithSelector(IERC20.transfer.selector, _to, _value)); handleReturn(success, result); diff --git a/src/diamonds/nayms/libs/LibEntity.sol b/src/libs/LibEntity.sol similarity index 89% rename from src/diamonds/nayms/libs/LibEntity.sol rename to src/libs/LibEntity.sol index 41beabf0..08999f62 100644 --- a/src/diamonds/nayms/libs/LibEntity.sol +++ b/src/libs/LibEntity.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { LibAppStorage, AppStorage } from "../AppStorage.sol"; -import { Entity, SimplePolicy, Stakeholders, FeeSchedule } from "../AppStorage.sol"; -import { LibConstants } from "./LibConstants.sol"; +import { LibAppStorage, AppStorage } from "../shared/AppStorage.sol"; +import { Entity, SimplePolicy, Stakeholders, FeeSchedule } from "../shared/AppStorage.sol"; +import { LibConstants as LC } from "./LibConstants.sol"; import { LibAdmin } from "./LibAdmin.sol"; import { LibHelpers } from "./LibHelpers.sol"; import { LibObject } from "./LibObject.sol"; @@ -14,7 +14,8 @@ import { LibSimplePolicy } from "./LibSimplePolicy.sol"; import { LibFeeRouter } from "./LibFeeRouter.sol"; import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import { FeeBasisPointsExceedHalfMax, EntityDoesNotExist, DuplicateSignerCreatingSimplePolicy, PolicyIdCannotBeZero, ObjectCannotBeTokenized, CreatingEntityThatAlreadyExists, SimplePolicyStakeholderSignatureInvalid, SimplePolicyClaimsPaidShouldStartAtZero, SimplePolicyPremiumsPaidShouldStartAtZero, CancelCannotBeTrueWhenCreatingSimplePolicy, UtilizedCapacityGreaterThanMaxCapacity } from "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { MessageHashUtils } from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; +import { FeeBasisPointsExceedHalfMax, EntityDoesNotExist, DuplicateSignerCreatingSimplePolicy, PolicyIdCannotBeZero, ObjectCannotBeTokenized, CreatingEntityThatAlreadyExists, SimplePolicyStakeholderSignatureInvalid, SimplePolicyClaimsPaidShouldStartAtZero, SimplePolicyPremiumsPaidShouldStartAtZero, CancelCannotBeTrueWhenCreatingSimplePolicy, UtilizedCapacityGreaterThanMaxCapacity } from "../shared/CustomErrors.sol"; library LibEntity { using ECDSA for bytes32; @@ -34,11 +35,7 @@ library LibEntity { * @dev If an entity passes their checks to create a policy, ensure that the entity's capacity is appropriately decreased by the amount of capital that will be tied to the new policy being created. */ - function _validateSimplePolicyCreation( - bytes32 _entityId, - SimplePolicy memory simplePolicy, - Stakeholders calldata _stakeholders - ) internal view { + function _validateSimplePolicyCreation(bytes32 _entityId, SimplePolicy memory simplePolicy, Stakeholders calldata _stakeholders) internal view { // The policy's limit cannot be 0. If a policy's limit is zero, this essentially means the policy doesn't require any capital, which doesn't make business sense. require(simplePolicy.limit > 0, "limit not > 0"); require(LibAdmin._isSupportedExternalToken(simplePolicy.asset), "external token is not supported"); @@ -58,21 +55,23 @@ library LibEntity { require(simplePolicy.asset == entity.assetId, "asset not matching with entity"); // Calculate the entity's utilized capacity after it writes this policy. - uint256 updatedUtilizedCapacity = entity.utilizedCapacity + ((simplePolicy.limit * entity.collateralRatio) / LibConstants.BP_FACTOR); + uint256 additionalCapacityNeeded = ((simplePolicy.limit * entity.collateralRatio) / LC.BP_FACTOR); + uint256 updatedUtilizedCapacity = entity.utilizedCapacity + additionalCapacityNeeded; // The entity must have enough capacity available to write this policy. // An entity is not able to write an additional policy that will utilize its capacity beyond its assigned max capacity. require(entity.maxCapacity >= updatedUtilizedCapacity, "not enough available capacity"); // The entity's balance must be >= to the updated capacity requirement - require(LibTokenizedVault._internalBalanceOf(_entityId, simplePolicy.asset) >= updatedUtilizedCapacity, "not enough capital"); + uint256 availableBalance = LibTokenizedVault._internalBalanceOf(_entityId, simplePolicy.asset) - LibTokenizedVault._getLockedBalance(_entityId, simplePolicy.asset); + require(availableBalance >= additionalCapacityNeeded, "not enough capital"); require(simplePolicy.startDate >= block.timestamp, "start date < block.timestamp"); require(simplePolicy.maturationDate > simplePolicy.startDate, "start date > maturation date"); require(simplePolicy.maturationDate - simplePolicy.startDate > 1 days, "policy period must be more than a day"); - FeeSchedule memory feeSchedule = LibFeeRouter._getFeeSchedule(_entityId, LibConstants.FEE_TYPE_PREMIUM); + FeeSchedule memory feeSchedule = LibFeeRouter._getFeeSchedule(_entityId, LC.FEE_TYPE_PREMIUM); uint256 feeReceiversCount = feeSchedule.receiver.length; // There must be at least one receiver from the fee schedule require(feeReceiversCount > 0, "must have fee schedule receivers"); // error there must be at least one receiver from fee schedule @@ -89,8 +88,8 @@ library LibEntity { commissionReceiversTotalBP += simplePolicy.commissionBasisPoints[i]; } - if (commissionReceiversTotalBP > LibConstants.BP_FACTOR / 2) { - revert FeeBasisPointsExceedHalfMax(commissionReceiversTotalBP, LibConstants.BP_FACTOR / 2); + if (commissionReceiversTotalBP > LC.BP_FACTOR / 2) { + revert FeeBasisPointsExceedHalfMax(commissionReceiversTotalBP, LC.BP_FACTOR / 2); } require(_stakeholders.roles.length == _stakeholders.entityIds.length, "stakeholders roles mismatch"); @@ -118,7 +117,7 @@ library LibEntity { _validateSimplePolicyCreation(_entityId, s.simplePolicies[_policyId], _stakeholders); Entity storage entity = s.entities[_entityId]; - uint256 factoredLimit = (_simplePolicy.limit * entity.collateralRatio) / LibConstants.BP_FACTOR; + uint256 factoredLimit = (_simplePolicy.limit * entity.collateralRatio) / LC.BP_FACTOR; entity.utilizedCapacity += factoredLimit; s.lockedBalances[_entityId][entity.assetId] += factoredLimit; @@ -126,7 +125,7 @@ library LibEntity { // hash contents are implicitly checked by making sure that resolved signer is the stakeholder entity's admin bytes32 signingHash = LibSimplePolicy._getSigningHash(_simplePolicy.startDate, _simplePolicy.maturationDate, _simplePolicy.asset, _simplePolicy.limit, _offchainDataHash); - LibObject._createObject(_policyId, _entityId, signingHash); + LibObject._createObject(_policyId, LC.OBJECT_TYPE_POLICY, _entityId, signingHash); s.simplePolicies[_policyId].fundsLocked = true; uint256 rolesCount = _stakeholders.roles.length; @@ -186,18 +185,14 @@ library LibEntity { } } - (address signer, ) = ECDSA.tryRecover(ECDSA.toEthSignedMessageHash(signingHash), v, r, s); + (address signer, , ) = ECDSA.tryRecover(MessageHashUtils.toEthSignedMessageHash(signingHash), v, r, s); return signer; } /// @param _amount the amount of entity token that is minted and put on sale /// @param _totalPrice the buy amount - function _startTokenSale( - bytes32 _entityId, - uint256 _amount, - uint256 _totalPrice - ) internal { + function _startTokenSale(bytes32 _entityId, uint256 _amount, uint256 _totalPrice) internal { require(_amount > 0, "mint amount must be > 0"); require(_totalPrice > 0, "total price must be > 0"); @@ -216,17 +211,12 @@ library LibEntity { // note: The participation tokens of the entity are minted to the entity. The participation tokens minted have the same ID as the entity. LibTokenizedVault._internalMint(_entityId, _entityId, _amount); - (uint256 offerId, , ) = LibMarket._executeLimitOffer(_entityId, _entityId, _amount, entity.assetId, _totalPrice, LibConstants.FEE_TYPE_INITIAL_SALE); + (uint256 offerId, , ) = LibMarket._executeLimitOffer(_entityId, _entityId, _amount, entity.assetId, _totalPrice, LC.FEE_TYPE_INITIAL_SALE); emit TokenSaleStarted(_entityId, offerId, s.objectTokenSymbol[_entityId], s.objectTokenName[_entityId]); } - function _createEntity( - bytes32 _entityId, - bytes32 _accountAdmin, - Entity calldata _entity, - bytes32 _dataHash - ) internal { + function _createEntity(bytes32 _entityId, bytes32 _accountAdmin, Entity calldata _entity, bytes32 _dataHash) internal { AppStorage storage s = LibAppStorage.diamondStorage(); if (s.existingEntities[_entityId]) { @@ -234,11 +224,11 @@ library LibEntity { } validateEntity(_entity); - LibObject._createObject(_entityId, _dataHash); + LibObject._createObject(_entityId, LC.OBJECT_TYPE_ENTITY, _dataHash); LibObject._setParent(_accountAdmin, _entityId); s.existingEntities[_entityId] = true; - LibACL._assignRole(_accountAdmin, _entityId, LibHelpers._stringToBytes32(LibConstants.ROLE_ENTITY_ADMIN)); + LibACL._assignRole(_accountAdmin, _entityId, LibHelpers._stringToBytes32(LC.ROLE_ENTITY_ADMIN)); // An entity starts without any capacity being utilized require(_entity.utilizedCapacity == 0, "utilized capacity starts at 0"); @@ -300,7 +290,7 @@ library LibEntity { // Collateral ratio must be in acceptable range of 1 to 10000 basis points (0.01% to 100% collateralized). // Cannot ever be completely uncollateralized (0 basis points), if entity is a cell. - require(1 <= _entity.collateralRatio && _entity.collateralRatio <= LibConstants.BP_FACTOR, "collateral ratio should be 1 to 10000"); + require(1 <= _entity.collateralRatio && _entity.collateralRatio <= LC.BP_FACTOR, "collateral ratio should be 1 to 10000"); // Max capacity is the capital amount that an entity can write across all of their policies. // note: We do not directly use the value maxCapacity to determine if the entity can or cannot write a policy. diff --git a/src/diamonds/nayms/libs/LibFeeRouter.sol b/src/libs/LibFeeRouter.sol similarity index 93% rename from src/diamonds/nayms/libs/LibFeeRouter.sol rename to src/libs/LibFeeRouter.sol index 81cf911d..a793693a 100644 --- a/src/diamonds/nayms/libs/LibFeeRouter.sol +++ b/src/libs/LibFeeRouter.sol @@ -1,17 +1,17 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage, CalculatedFees, FeeAllocation, FeeSchedule } from "../AppStorage.sol"; +import { AppStorage, LibAppStorage, CalculatedFees, FeeAllocation, FeeSchedule } from "../shared/AppStorage.sol"; import { LibObject } from "./LibObject.sol"; import { LibConstants } from "./LibConstants.sol"; import { LibTokenizedVault } from "./LibTokenizedVault.sol"; -import { FeeBasisPointsExceedHalfMax } from "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { FeeBasisPointsExceedHalfMax } from "../shared/CustomErrors.sol"; library LibFeeRouter { event FeePaid(bytes32 indexed fromId, bytes32 indexed toId, bytes32 tokenId, uint256 amount, uint256 feeType); event MakerBasisPointsUpdated(uint16 tradingCommissionMakerBP); - event FeeScheduleAdded(bytes32 _entityId, uint256 _feeType, FeeSchedule feeSchedule); + event FeeScheduleAdded(bytes32 entityId, uint256 feeType, FeeSchedule feeSchedule); function _calculatePremiumFees(bytes32 _policyId, uint256 _premiumPaid) internal view returns (CalculatedFees memory cf) { AppStorage storage s = LibAppStorage.diamondStorage(); @@ -85,12 +85,7 @@ library LibFeeRouter { } } - function _calculateTradingFees( - bytes32 _buyerId, - bytes32 _sellToken, - bytes32 _buyToken, - uint256 _buyAmount - ) internal view returns (uint256 totalFees_, uint256 totalBP_) { + function _calculateTradingFees(bytes32 _buyerId, bytes32 _sellToken, bytes32 _buyToken, uint256 _buyAmount) internal view returns (uint256 totalFees_, uint256 totalBP_) { AppStorage storage s = LibAppStorage.diamondStorage(); uint256 offerId = s.bestOfferId[_buyToken][_sellToken]; @@ -169,12 +164,7 @@ library LibFeeRouter { emit MakerBasisPointsUpdated(tradingCommissionMakerBP); } - function _addFeeSchedule( - bytes32 _entityId, - uint256 _feeScheduleType, - bytes32[] calldata _receiver, - uint16[] calldata _basisPoints - ) internal { + function _addFeeSchedule(bytes32 _entityId, uint256 _feeScheduleType, bytes32[] calldata _receiver, uint16[] calldata _basisPoints) internal { AppStorage storage s = LibAppStorage.diamondStorage(); require(_receiver.length == _basisPoints.length, "receivers and basis points mismatch"); diff --git a/src/libs/LibGovernance.sol b/src/libs/LibGovernance.sol new file mode 100644 index 00000000..92f699ab --- /dev/null +++ b/src/libs/LibGovernance.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; + +/// @notice Contains internal methods for upgrade functionality +library LibGovernance { + function _calculateUpgradeId(IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata) internal pure returns (bytes32) { + return keccak256(abi.encode(_diamondCut, _init, _calldata)); + } +} diff --git a/src/diamonds/nayms/libs/LibHelpers.sol b/src/libs/LibHelpers.sol similarity index 97% rename from src/diamonds/nayms/libs/LibHelpers.sol rename to src/libs/LibHelpers.sol index 69abc951..90bde36c 100644 --- a/src/diamonds/nayms/libs/LibHelpers.sol +++ b/src/libs/LibHelpers.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /// @notice Pure functions library LibHelpers { @@ -34,7 +34,7 @@ library LibHelpers { function _getAddressFromId(bytes32 _id) internal pure returns (address) { if (!_checkBottom12BytesAreEmpty(_id)) { - revert("Invalid external token address"); + revert("Invalid address based ID"); } // returns the bottom 20 bytes of the id return address(bytes20(_id)); diff --git a/src/libs/LibInitDiamond.sol b/src/libs/LibInitDiamond.sol new file mode 100644 index 00000000..274bc7f2 --- /dev/null +++ b/src/libs/LibInitDiamond.sol @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { AppStorage, FunctionLockedStorage, LibAppStorage } from "../shared/AppStorage.sol"; +import { LibConstants as LC } from "./LibConstants.sol"; +import { LibHelpers } from "./LibHelpers.sol"; +import { LibAdmin } from "./LibAdmin.sol"; +import { LibACL } from "./LibACL.sol"; + +library LibInitDiamond { + function setSystemAdmin(address _newSystemAdmin) internal { + AppStorage storage s = LibAppStorage.diamondStorage(); + + bytes32 userId = LibHelpers._getIdForAddress(_newSystemAdmin); + s.existingObjects[userId] = true; + + LibACL._assignRole(userId, LibAdmin._getSystemId(), LibHelpers._stringToBytes32(LC.ROLE_SYSTEM_ADMIN)); + } + + function setUpgradeExpiration() internal { + AppStorage storage s = LibAppStorage.diamondStorage(); + /// @dev We set the upgrade expiration to 7 days from now (604800 seconds) + s.upgradeExpiration = 1 weeks; + } + + function setRoleGroupsAndAssigners() internal { + LibACL._updateRoleGroup(LC.ROLE_SYSTEM_ADMIN, LC.GROUP_SYSTEM_MANAGERS, false); + + // setup core groups + LibACL._updateRoleGroup(LC.ROLE_SYSTEM_UNDERWRITER, LC.GROUP_SYSTEM_UNDERWRITERS, true); + LibACL._updateRoleGroup(LC.ROLE_SYSTEM_MANAGER, LC.GROUP_SYSTEM_MANAGERS, true); + LibACL._updateRoleGroup(LC.ROLE_SYSTEM_MANAGER, LC.GROUP_MANAGERS, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_MANAGER, LC.GROUP_MANAGERS, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_MANAGER, LC.GROUP_ENTITY_MANAGERS, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_ADMIN, LC.GROUP_ENTITY_ADMINS, true); + + // setup function groups + LibACL._updateRoleGroup(LC.ROLE_SYSTEM_ADMIN, LC.GROUP_SYSTEM_ADMINS, true); + LibACL._updateRoleGroup(LC.ROLE_SYSTEM_MANAGER, LC.GROUP_START_TOKEN_SALE, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_MANAGER, LC.GROUP_START_TOKEN_SALE, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_MANAGER, LC.GROUP_CANCEL_OFFER, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_CP, LC.GROUP_CANCEL_OFFER, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_CP, LC.GROUP_EXECUTE_LIMIT_OFFER, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_ADMIN, LC.GROUP_EXECUTE_LIMIT_OFFER, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_BROKER, LC.GROUP_PAY_SIMPLE_PREMIUM, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_INSURED, LC.GROUP_PAY_SIMPLE_PREMIUM, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_PAY_SIMPLE_CLAIM, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_CLAIM, LC.GROUP_PAY_SIMPLE_CLAIM, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_PAY_DIVIDEND_FROM_ENTITY, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_DIVIDEND, LC.GROUP_PAY_DIVIDEND_FROM_ENTITY, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_ADMIN, LC.GROUP_EXTERNAL_DEPOSIT, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_EXTERNAL_DEPOSIT, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_WITHDRAW, LC.GROUP_EXTERNAL_DEPOSIT, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_ADMIN, LC.GROUP_EXTERNAL_WITHDRAW_FROM_ENTITY, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_EXTERNAL_WITHDRAW_FROM_ENTITY, true); + LibACL._updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_WITHDRAW, LC.GROUP_EXTERNAL_WITHDRAW_FROM_ENTITY, true); + + // setup stakeholder groups + LibACL._updateRoleGroup(LC.ROLE_UNDERWRITER, LC.GROUP_UNDERWRITERS, true); + LibACL._updateRoleGroup(LC.ROLE_BROKER, LC.GROUP_BROKERS, true); + LibACL._updateRoleGroup(LC.ROLE_CAPITAL_PROVIDER, LC.GROUP_CAPITAL_PROVIDERS, true); + LibACL._updateRoleGroup(LC.ROLE_INSURED_PARTY, LC.GROUP_INSURED_PARTIES, true); + + // setup assigners + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_CP, LC.GROUP_SYSTEM_MANAGERS); + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_BROKER, LC.GROUP_MANAGERS); + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_INSURED, LC.GROUP_MANAGERS); + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_ENTITY_MANAGERS); + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_COMPTROLLER_WITHDRAW, LC.GROUP_ENTITY_MANAGERS); + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_COMPTROLLER_CLAIM, LC.GROUP_ENTITY_MANAGERS); + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_COMPTROLLER_DIVIDEND, LC.GROUP_ENTITY_MANAGERS); + LibACL._updateRoleAssigner(LC.ROLE_SYSTEM_ADMIN, LC.GROUP_SYSTEM_ADMINS); + LibACL._updateRoleAssigner(LC.ROLE_SYSTEM_MANAGER, LC.GROUP_SYSTEM_ADMINS); + LibACL._updateRoleAssigner(LC.ROLE_SYSTEM_UNDERWRITER, LC.GROUP_SYSTEM_ADMINS); + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_ADMIN, LC.GROUP_SYSTEM_ADMINS); + LibACL._updateRoleAssigner(LC.ROLE_ENTITY_MANAGER, LC.GROUP_SYSTEM_ADMINS); + } +} diff --git a/src/diamonds/nayms/libs/LibMarket.sol b/src/libs/LibMarket.sol similarity index 91% rename from src/diamonds/nayms/libs/LibMarket.sol rename to src/libs/LibMarket.sol index 7400c60d..51014a0f 100644 --- a/src/diamonds/nayms/libs/LibMarket.sol +++ b/src/libs/LibMarket.sol @@ -1,12 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; -import { MarketInfo, TokenAmount, CalculatedFees } from "../AppStorage.sol"; +import { AppStorage, LibAppStorage, MarketInfo, TokenAmount, CalculatedFees } from "../shared/AppStorage.sol"; import { LibHelpers } from "./LibHelpers.sol"; import { LibTokenizedVault } from "./LibTokenizedVault.sol"; import { LibConstants } from "./LibConstants.sol"; import { LibFeeRouter } from "./LibFeeRouter.sol"; +import { LibAdmin } from "./LibAdmin.sol"; + +import { MinimumSellCannotBeZero } from "../shared/CustomErrors.sol"; library LibMarket { struct MatchingOfferResult { @@ -35,6 +37,9 @@ library LibMarket { /// @notice order has been cancelled event OrderCancelled(uint256 indexed orderId, bytes32 indexed taker, bytes32 sellToken); + /// @notice The minimum amount of an object (par token, external token) that can be sold on the market + event MinimumSellUpdated(bytes32 objectId, uint256 minimumSell); + function _getBestOfferId(bytes32 _sellToken, bytes32 _buyToken) internal view returns (uint256) { AppStorage storage s = LibAppStorage.diamondStorage(); return s.bestOfferId[_sellToken][_buyToken]; @@ -127,11 +132,11 @@ library LibMarket { function _isOfferPricedLtOrEq(uint256 _lowOfferId, uint256 _highOfferId) internal view returns (bool) { AppStorage storage s = LibAppStorage.diamondStorage(); - uint256 lowSellAmount = s.offers[_lowOfferId].sellAmount; - uint256 lowBuyAmount = s.offers[_lowOfferId].buyAmount; + uint256 lowSellAmount = s.offers[_lowOfferId].sellAmountInitial; + uint256 lowBuyAmount = s.offers[_lowOfferId].buyAmountInitial; - uint256 highSellAmount = s.offers[_highOfferId].sellAmount; - uint256 highBuyAmount = s.offers[_highOfferId].buyAmount; + uint256 highSellAmount = s.offers[_highOfferId].sellAmountInitial; + uint256 highBuyAmount = s.offers[_highOfferId].buyAmountInitial; return lowBuyAmount * highSellAmount >= highBuyAmount * lowSellAmount; } @@ -164,7 +169,7 @@ library LibMarket { // If the buyToken is entity(p-token) => limit both buy and sell amounts // If the buyToken is external => limit only sell amount - bool buyExternalToken = LibHelpers._isAddress(_buyToken) && s.externalTokenSupported[LibHelpers._getAddressFromId(_buyToken)]; + bool buyExternalToken = LibAdmin._isSupportedExternalToken(_buyToken); while (result.remainingSellAmount != 0 && (buyExternalToken || result.remainingBuyAmount != 0)) { // there is at least one offer stored for token pair uint256 bestOfferId = s.bestOfferId[_buyToken][_sellToken]; @@ -245,7 +250,7 @@ library LibMarket { marketInfo.buyAmountInitial = _buyAmountInitial; marketInfo.feeSchedule = _feeScheduleType; - if (_buyAmount < LibConstants.DUST || _sellAmount < LibConstants.DUST) { + if (_buyAmount < s.objectMinimumSell[_buyToken] || _sellAmount < s.objectMinimumSell[_sellToken]) { marketInfo.state = LibConstants.OFFER_STATE_FULFILLED; } else { marketInfo.state = LibConstants.OFFER_STATE_ACTIVE; @@ -306,7 +311,7 @@ library LibMarket { } // close offer if it has become dust - if (s.offers[_offerId].sellAmount < LibConstants.DUST) { + if (s.offers[_offerId].sellAmount < s.objectMinimumSell[s.offers[_offerId].sellToken]) { s.offers[_offerId].state = LibConstants.OFFER_STATE_FULFILLED; _cancelOffer(_offerId); } @@ -322,11 +327,7 @@ library LibMarket { ); } - function _checkBoundsAndUpdateBalances( - uint256 _offerId, - uint256 _sellAmount, - uint256 _buyAmount - ) internal { + function _checkBoundsAndUpdateBalances(uint256 _offerId, uint256 _sellAmount, uint256 _buyAmount) internal { AppStorage storage s = LibAppStorage.diamondStorage(); (TokenAmount memory offerSell, TokenAmount memory offerBuy) = _getOfferTokenAmounts(_offerId); @@ -375,14 +376,7 @@ library LibMarket { require(_buyAmount > 0, "buy amount must be >0"); } - function _assertValidOffer( - bytes32 _entityId, - bytes32 _sellToken, - uint256 _sellAmount, - bytes32 _buyToken, - uint256 _buyAmount, - uint256 _feeScheduleType - ) internal view { + function _assertValidOffer(bytes32 _entityId, bytes32 _sellToken, uint256 _sellAmount, bytes32 _buyToken, uint256 _buyAmount, uint256 _feeScheduleType) internal view { AppStorage storage s = LibAppStorage.diamondStorage(); // A valid offer can only be made by an existing entity. @@ -395,9 +389,9 @@ library LibMarket { // The platform also does not allow entities to trade external tokens (cannot trade an external token for another external token). bool isSellTokenAParticipationToken = s.existingEntities[_sellToken]; - bool isSellTokenASupportedExternalToken = LibHelpers._isAddress(_sellToken) && s.externalTokenSupported[LibHelpers._getAddressFromId(_sellToken)]; + bool isSellTokenASupportedExternalToken = LibAdmin._isSupportedExternalToken(_sellToken); bool isBuyTokenAParticipationToken = s.existingEntities[_buyToken]; - bool isBuyTokenASupportedExternalToken = LibHelpers._isAddress(_buyToken) && s.externalTokenSupported[LibHelpers._getAddressFromId(_buyToken)]; + bool isBuyTokenASupportedExternalToken = LibAdmin._isSupportedExternalToken(_buyToken); _assertAmounts(_sellAmount, _buyAmount); @@ -434,14 +428,7 @@ library LibMarket { bytes32 _buyToken, uint256 _buyAmount, uint256 _feeScheduleType - ) - internal - returns ( - uint256 offerId_, - uint256 buyTokenCommissionsPaid_, - uint256 sellTokenCommissionsPaid_ - ) - { + ) internal returns (uint256 offerId_, uint256 buyTokenCommissionsPaid_, uint256 sellTokenCommissionsPaid_) { _assertValidOffer(_creator, _sellToken, _sellAmount, _buyToken, _buyAmount, _feeScheduleType); MatchingOfferResult memory result = _matchToExistingOffers(_creator, _sellToken, _sellAmount, _buyToken, _buyAmount, _feeScheduleType); @@ -472,4 +459,18 @@ library LibMarket { AppStorage storage s = LibAppStorage.diamondStorage(); return s.offers[_offerId].state == LibConstants.OFFER_STATE_ACTIVE; } + + function _objectMinimumSell(bytes32 _objectId) internal view returns (uint256) { + AppStorage storage s = LibAppStorage.diamondStorage(); + return s.objectMinimumSell[_objectId]; + } + + function _setMinimumSell(bytes32 _objectId, uint256 _minimumSell) internal { + AppStorage storage s = LibAppStorage.diamondStorage(); + if (_minimumSell == 0) revert MinimumSellCannotBeZero(); + + s.objectMinimumSell[_objectId] = _minimumSell; + + emit MinimumSellUpdated(_objectId, _minimumSell); + } } diff --git a/src/diamonds/nayms/libs/LibNaymsToken.sol b/src/libs/LibNaymsToken.sol similarity index 83% rename from src/diamonds/nayms/libs/LibNaymsToken.sol rename to src/libs/LibNaymsToken.sol index 9717b4c9..bcb100d8 100644 --- a/src/diamonds/nayms/libs/LibNaymsToken.sol +++ b/src/libs/LibNaymsToken.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; /// @notice Contains internal methods for Nayms token functionality library LibNaymsToken { diff --git a/src/diamonds/nayms/libs/LibObject.sol b/src/libs/LibObject.sol similarity index 62% rename from src/diamonds/nayms/libs/LibObject.sol rename to src/libs/LibObject.sol index b4df26c0..b35044f0 100644 --- a/src/diamonds/nayms/libs/LibObject.sol +++ b/src/libs/LibObject.sol @@ -1,11 +1,12 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; import { LibHelpers } from "./LibHelpers.sol"; -import { EntityDoesNotExist, MissingSymbolWhenEnablingTokenization } from "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { LibConstants as LC } from "./LibConstants.sol"; +import { EntityDoesNotExist, ObjectCannotBeTokenized, ObjectTokenSymbolInvalid, ObjectTokenSymbolAlreadyInUse, ObjectTokenNameInvalid, InvalidObjectType, InvalidObjectIdForAddress, MinimumSellCannotBeZero } from "../shared/CustomErrors.sol"; -import { ERC20Wrapper } from "../../../erc20/ERC20Wrapper.sol"; +import { ERC20Wrapper } from "../utils/ERC20Wrapper.sol"; /// @notice Contains internal methods for core Nayms system functionality library LibObject { @@ -15,30 +16,30 @@ library LibObject { event ObjectCreated(bytes32 objectId, bytes32 parentId, bytes32 dataHash); event ObjectUpdated(bytes32 objectId, bytes32 parentId, bytes32 dataHash); - function _createObject( - bytes32 _objectId, - bytes32 _parentId, - bytes32 _dataHash - ) internal { + function _createObject(bytes32 _objectId, bytes12 _objectType, bytes32 _parentId, bytes32 _dataHash) internal { AppStorage storage s = LibAppStorage.diamondStorage(); - _createObject(_objectId); + _createObject(_objectId, _objectType); s.objectParent[_objectId] = _parentId; s.objectDataHashes[_objectId] = _dataHash; emit ObjectCreated(_objectId, _parentId, _dataHash); } - function _createObject(bytes32 _objectId, bytes32 _dataHash) internal { + function _createObject(bytes32 _objectId, bytes12 _objectType, bytes32 _dataHash) internal { AppStorage storage s = LibAppStorage.diamondStorage(); - _createObject(_objectId); + _createObject(_objectId, _objectType); s.objectDataHashes[_objectId] = _dataHash; emit ObjectCreated(_objectId, 0, _dataHash); } - function _createObject(bytes32 _objectId) internal { + function _createObject(bytes32 _objectId, bytes12 _objectType) internal { AppStorage storage s = LibAppStorage.diamondStorage(); require(!s.existingObjects[_objectId], "objectId is already being used by another object"); + if (_objectType == LC.OBJECT_TYPE_ADDRESS && !LibHelpers._isAddress(_objectId)) revert InvalidObjectIdForAddress(_objectId); + if (_objectType != LC.OBJECT_TYPE_ADDRESS && LibHelpers._isAddress(_objectId)) revert InvalidObjectType(_objectId, _objectType); + if (_objectType != LC.OBJECT_TYPE_ADDRESS && !_isObjectType(_objectId, _objectType)) revert InvalidObjectType(_objectId, _objectType); + s.existingObjects[_objectId] = true; emit ObjectCreated(_objectId, 0, 0); @@ -86,16 +87,28 @@ library LibObject { return s.tokenSymbolObjectId[_symbol] == bytes32(0); } - function _enableObjectTokenization( - bytes32 _objectId, - string memory _symbol, - string memory _name - ) internal { + function _validateTokenNameAndSymbol(bytes32 _objectId, string memory _symbol, string memory _name) private view { AppStorage storage s = LibAppStorage.diamondStorage(); - if (bytes(_symbol).length == 0) { - revert MissingSymbolWhenEnablingTokenization(_objectId); + + if (bytes(_symbol).length == 0 || bytes(_symbol).length > 16) { + revert ObjectTokenSymbolInvalid(_objectId, _symbol); + } + + if (bytes(_name).length == 0 || bytes(_name).length > 64) { + revert ObjectTokenNameInvalid(_objectId, _name); + } + + if (s.tokenSymbolObjectId[_symbol] != bytes32(0)) { + revert ObjectTokenSymbolAlreadyInUse(_objectId, _symbol); } - require(bytes(_symbol).length < 16, "symbol must be less than 16 characters"); + } + + function _enableObjectTokenization(bytes32 _objectId, string memory _symbol, string memory _name, uint256 _minimumSell) internal { + AppStorage storage s = LibAppStorage.diamondStorage(); + + _validateTokenNameAndSymbol(_objectId, _symbol, _name); + + if (_minimumSell == 0) revert MinimumSellCannotBeZero(); // Ensure the entity exists before tokenizing the entity, otherwise revert. if (!s.existingEntities[_objectId]) { @@ -103,24 +116,20 @@ library LibObject { } require(!_isObjectTokenizable(_objectId), "object already tokenized"); - require(_tokenSymbolNotUsed(_symbol), "token symbol already in use"); - - require(bytes(_name).length > 0, "name must not be empty"); s.objectTokenSymbol[_objectId] = _symbol; s.objectTokenName[_objectId] = _name; s.tokenSymbolObjectId[_symbol] = _objectId; + s.objectMinimumSell[_objectId] = _minimumSell; emit TokenizationEnabled(_objectId, _symbol, _name); } - function _updateTokenInfo( - bytes32 _objectId, - string memory _symbol, - string memory _name - ) internal { + function _updateTokenInfo(bytes32 _objectId, string memory _symbol, string memory _name) internal { AppStorage storage s = LibAppStorage.diamondStorage(); - require(_tokenSymbolNotUsed(_symbol), "token symbol already in use"); + + _validateTokenNameAndSymbol(_objectId, _symbol, _name); + require(_isObjectTokenizable(_objectId), "object not tokenized"); string memory oldSymbol = s.objectTokenSymbol[_objectId]; @@ -158,17 +167,19 @@ library LibObject { return s.existingObjects[_id]; } - function _getObjectMeta(bytes32 _id) - internal - view - returns ( - bytes32 parent, - bytes32 dataHash, - string memory tokenSymbol, - string memory tokenName, - address tokenWrapper - ) - { + function _getObjectType(bytes32 _objectId) internal pure returns (bytes12 objectType) { + bytes32 shifted = _objectId >> 160; + assembly { + objectType := shl(160, shifted) + } + return objectType; + } + + function _isObjectType(bytes32 _objectId, bytes12 _objectType) internal pure returns (bool) { + return (_getObjectType(_objectId) == _objectType); + } + + function _getObjectMeta(bytes32 _id) internal view returns (bytes32 parent, bytes32 dataHash, string memory tokenSymbol, string memory tokenName, address tokenWrapper) { AppStorage storage s = LibAppStorage.diamondStorage(); parent = s.objectParent[_id]; dataHash = s.objectDataHashes[_id]; @@ -176,4 +187,9 @@ library LibObject { tokenName = s.objectTokenName[_id]; tokenWrapper = s.objectTokenWrapper[_id]; } + + function _objectTokenSymbol(bytes32 _objectId) internal view returns (string memory) { + AppStorage storage s = LibAppStorage.diamondStorage(); + return s.objectTokenSymbol[_objectId]; + } } diff --git a/src/diamonds/nayms/libs/LibSimplePolicy.sol b/src/libs/LibSimplePolicy.sol similarity index 71% rename from src/diamonds/nayms/libs/LibSimplePolicy.sol rename to src/libs/LibSimplePolicy.sol index 1a2c1da0..ff9e8cc1 100644 --- a/src/diamonds/nayms/libs/LibSimplePolicy.sol +++ b/src/libs/LibSimplePolicy.sol @@ -1,23 +1,22 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; -import { Entity, SimplePolicy } from "../AppStorage.sol"; +import { AppStorage, LibAppStorage, Entity, SimplePolicy } from "../shared/AppStorage.sol"; import { LibACL } from "./LibACL.sol"; -import { LibConstants } from "./LibConstants.sol"; +import { LibConstants as LC } from "./LibConstants.sol"; import { LibObject } from "./LibObject.sol"; import { LibTokenizedVault } from "./LibTokenizedVault.sol"; import { LibFeeRouter } from "./LibFeeRouter.sol"; import { LibHelpers } from "./LibHelpers.sol"; -import { LibEIP712 } from "src/diamonds/nayms/libs/LibEIP712.sol"; +import { LibEIP712 } from "./LibEIP712.sol"; -import { EntityDoesNotExist, PolicyDoesNotExist } from "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { EntityDoesNotExist, PolicyDoesNotExist, PolicyCannotCancelAfterMaturation } from "../shared/CustomErrors.sol"; library LibSimplePolicy { event SimplePolicyMatured(bytes32 indexed id); event SimplePolicyCancelled(bytes32 indexed id); event SimplePolicyPremiumPaid(bytes32 indexed id, uint256 amount); - event SimplePolicyClaimPaid(bytes32 indexed _claimId, bytes32 indexed policyId, bytes32 indexed insuredId, uint256 amount); + event SimplePolicyClaimPaid(bytes32 indexed claimId, bytes32 indexed policyId, bytes32 indexed insuredId, uint256 amount); function _getSimplePolicyInfo(bytes32 _policyId) internal view returns (SimplePolicy memory simplePolicyInfo) { AppStorage storage s = LibAppStorage.diamondStorage(); @@ -37,11 +36,7 @@ library LibSimplePolicy { } } - function _payPremium( - bytes32 _payerEntityId, - bytes32 _policyId, - uint256 _amount - ) internal { + function _payPremium(bytes32 _payerEntityId, bytes32 _policyId, uint256 _amount) internal { require(_amount > 0, "invalid premium amount"); AppStorage storage s = LibAppStorage.diamondStorage(); @@ -63,16 +58,11 @@ library LibSimplePolicy { emit SimplePolicyPremiumPaid(_policyId, _amount); } - function _payClaim( - bytes32 _claimId, - bytes32 _policyId, - bytes32 _insuredEntityId, - uint256 _amount - ) internal { + function _payClaim(bytes32 _claimId, bytes32 _policyId, bytes32 _insuredEntityId, uint256 _amount) internal { AppStorage storage s = LibAppStorage.diamondStorage(); require(_amount > 0, "invalid claim amount"); - require(LibACL._isInGroup(_insuredEntityId, _policyId, LibHelpers._stringToBytes32(LibConstants.GROUP_INSURED_PARTIES)), "not an insured party"); + require(LibACL._isInGroup(_insuredEntityId, _policyId, LibHelpers._stringToBytes32(LC.GROUP_INSURED_PARTIES)), "not an insured party"); SimplePolicy storage simplePolicy = s.simplePolicies[_policyId]; require(!simplePolicy.cancelled, "Policy is cancelled"); @@ -83,11 +73,16 @@ library LibSimplePolicy { bytes32 entityId = LibObject._getParent(_policyId); Entity memory entity = s.entities[entityId]; - s.lockedBalances[entityId][entity.assetId] -= (_amount * entity.collateralRatio) / LibConstants.BP_FACTOR; - s.entities[entityId].utilizedCapacity -= (_amount * entity.collateralRatio) / LibConstants.BP_FACTOR; + if (simplePolicy.fundsLocked) { + s.lockedBalances[entityId][entity.assetId] -= (_amount * entity.collateralRatio) / LC.BP_FACTOR; + s.entities[entityId].utilizedCapacity -= (_amount * entity.collateralRatio) / LC.BP_FACTOR; + } else { + uint256 availableBalance = LibTokenizedVault._internalBalanceOf(entityId, simplePolicy.asset) - LibTokenizedVault._getLockedBalance(entityId, simplePolicy.asset); + require(availableBalance > _amount, "not enough balance"); + } - LibObject._createObject(_claimId); + LibObject._createObject(_claimId, LC.OBJECT_TYPE_CLAIM); LibTokenizedVault._internalTransfer(entityId, _insuredEntityId, simplePolicy.asset, _amount); @@ -99,6 +94,10 @@ library LibSimplePolicy { SimplePolicy storage simplePolicy = s.simplePolicies[_policyId]; require(!simplePolicy.cancelled, "Policy already cancelled"); + if (block.timestamp >= simplePolicy.maturationDate) { + revert PolicyCannotCancelAfterMaturation(_policyId); + } + releaseFunds(_policyId); simplePolicy.cancelled = true; @@ -112,20 +111,14 @@ library LibSimplePolicy { SimplePolicy storage simplePolicy = s.simplePolicies[_policyId]; Entity storage entity = s.entities[entityId]; - uint256 policyLockedAmount = ((simplePolicy.limit - simplePolicy.claimsPaid) * entity.collateralRatio) / LibConstants.BP_FACTOR; + uint256 policyLockedAmount = ((simplePolicy.limit - simplePolicy.claimsPaid) * entity.collateralRatio) / LC.BP_FACTOR; entity.utilizedCapacity -= policyLockedAmount; s.lockedBalances[entityId][entity.assetId] -= policyLockedAmount; simplePolicy.fundsLocked = false; } - function _getSigningHash( - uint256 _startDate, - uint256 _maturationDate, - bytes32 _asset, - uint256 _limit, - bytes32 _offchainDataHash - ) internal view returns (bytes32) { + function _getSigningHash(uint256 _startDate, uint256 _maturationDate, bytes32 _asset, uint256 _limit, bytes32 _offchainDataHash) internal view returns (bytes32) { return LibEIP712._hashTypedDataV4( keccak256( diff --git a/src/diamonds/nayms/libs/LibTokenizedVault.sol b/src/libs/LibTokenizedVault.sol similarity index 89% rename from src/diamonds/nayms/libs/LibTokenizedVault.sol rename to src/libs/LibTokenizedVault.sol index 81c7b8f6..6f5cdb7b 100644 --- a/src/diamonds/nayms/libs/LibTokenizedVault.sol +++ b/src/libs/LibTokenizedVault.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "../AppStorage.sol"; +import { AppStorage, LibAppStorage } from "../shared/AppStorage.sol"; import { LibAdmin } from "./LibAdmin.sol"; -import { LibConstants } from "./LibConstants.sol"; +import { LibConstants as LC } from "./LibConstants.sol"; import { LibHelpers } from "./LibHelpers.sol"; import { LibObject } from "./LibObject.sol"; @@ -56,12 +56,7 @@ library LibTokenizedVault { return s.tokenSupply[_objectId]; } - function _internalTransfer( - bytes32 _from, - bytes32 _to, - bytes32 _tokenId, - uint256 _amount - ) internal returns (bool success) { + function _internalTransfer(bytes32 _from, bytes32 _to, bytes32 _tokenId, uint256 _amount) internal returns (bool success) { AppStorage storage s = LibAppStorage.diamondStorage(); require(s.tokenBalances[_tokenId][_from] >= _amount, "_internalTransfer: insufficient balance"); @@ -80,11 +75,7 @@ library LibTokenizedVault { success = true; } - function _internalMint( - bytes32 _to, - bytes32 _tokenId, - uint256 _amount - ) internal { + function _internalMint(bytes32 _to, bytes32 _tokenId, uint256 _amount) internal { require(_to != "", "_internalMint: mint to zero address"); require(_amount > 0, "_internalMint: mint zero tokens"); @@ -99,13 +90,7 @@ library LibTokenizedVault { emit InternalTokenBalanceUpdate(_to, _tokenId, s.tokenBalances[_tokenId][_to], "_internalMint", msg.sender); } - function _normalizeDividends( - bytes32 _from, - bytes32 _to, - bytes32 _tokenId, - uint256 _amount, - bool _updateTotals - ) internal { + function _normalizeDividends(bytes32 _from, bytes32 _to, bytes32 _tokenId, uint256 _amount, bool _updateTotals) internal { AppStorage storage s = LibAppStorage.diamondStorage(); uint256 supply = _internalTokenSupply(_tokenId); @@ -135,11 +120,7 @@ library LibTokenizedVault { } } - function _internalBurn( - bytes32 _from, - bytes32 _tokenId, - uint256 _amount - ) internal { + function _internalBurn(bytes32 _from, bytes32 _tokenId, uint256 _amount) internal { AppStorage storage s = LibAppStorage.diamondStorage(); require(s.tokenBalances[_tokenId][_from] >= _amount, "_internalBurn: insufficient balance"); @@ -174,13 +155,9 @@ library LibTokenizedVault { // totalWithdrawnDividendPerOwner(for new owner) += numberOfSharesMinted * totalDividendPerToken // // When doing the division these will be dust. Leave the dust in the diamond!!! - function _withdrawDividend( - bytes32 _ownerId, - bytes32 _tokenId, - bytes32 _dividendTokenId - ) internal { + function _withdrawDividend(bytes32 _ownerId, bytes32 _tokenId, bytes32 _dividendTokenId) internal { AppStorage storage s = LibAppStorage.diamondStorage(); - bytes32 dividendBankId = LibHelpers._stringToBytes32(LibConstants.DIVIDEND_BANK_IDENTIFIER); + bytes32 dividendBankId = LibHelpers._stringToBytes32(LC.DIVIDEND_BANK_IDENTIFIER); uint256 amountOwned = s.tokenBalances[_tokenId][_ownerId]; uint256 supply = _internalTokenSupply(_tokenId); @@ -202,11 +179,7 @@ library LibTokenizedVault { } } - function _getWithdrawableDividend( - bytes32 _ownerId, - bytes32 _tokenId, - bytes32 _dividendTokenId - ) internal view returns (uint256 withdrawableDividend_) { + function _getWithdrawableDividend(bytes32 _ownerId, bytes32 _tokenId, bytes32 _dividendTokenId) internal view returns (uint256 withdrawableDividend_) { AppStorage storage s = LibAppStorage.diamondStorage(); uint256 amount = s.tokenBalances[_tokenId][_ownerId]; @@ -226,19 +199,13 @@ library LibTokenizedVault { } } - function _payDividend( - bytes32 _guid, - bytes32 _from, - bytes32 _to, - bytes32 _dividendTokenId, - uint256 _amount - ) internal { + function _payDividend(bytes32 _guid, bytes32 _from, bytes32 _to, bytes32 _dividendTokenId, uint256 _amount) internal { require(_amount > 0, "dividend amount must be > 0"); require(LibAdmin._isSupportedExternalToken(_dividendTokenId), "must be supported dividend token"); require(!LibObject._isObject(_guid), "nonunique dividend distribution identifier"); AppStorage storage s = LibAppStorage.diamondStorage(); - bytes32 dividendBankId = LibHelpers._stringToBytes32(LibConstants.DIVIDEND_BANK_IDENTIFIER); + bytes32 dividendBankId = LibHelpers._stringToBytes32(LC.DIVIDEND_BANK_IDENTIFIER); // If no tokens are issued, then deposit directly. // note: This functionality is for the business case where we want to distribute dividends directly to entities. @@ -268,7 +235,7 @@ library LibTokenizedVault { } // prevent guid reuse/collision - LibObject._createObject(_guid); + LibObject._createObject(_guid, LC.OBJECT_TYPE_DIVIDEND); // Events are emitted from the _internalTransfer() emit DividendDistribution(_guid, _from, _to, _dividendTokenId, _amount); @@ -291,4 +258,10 @@ library LibTokenizedVault { AppStorage storage s = LibAppStorage.diamondStorage(); return s.lockedBalances[_accountId][_tokenId]; } + + function _totalDividends(bytes32 _tokenId, bytes32 _dividendDenominationId) internal view returns (uint256) { + AppStorage storage s = LibAppStorage.diamondStorage(); + + return s.totalDividends[_tokenId][_dividendDenominationId]; + } } diff --git a/src/diamonds/nayms/libs/LibTokenizedVaultIO.sol b/src/libs/LibTokenizedVaultIO.sol similarity index 77% rename from src/diamonds/nayms/libs/LibTokenizedVaultIO.sol rename to src/libs/LibTokenizedVaultIO.sol index 263e1855..29c3267f 100644 --- a/src/diamonds/nayms/libs/LibTokenizedVaultIO.sol +++ b/src/libs/LibTokenizedVaultIO.sol @@ -1,21 +1,17 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { LibHelpers } from "./LibHelpers.sol"; import { LibTokenizedVault } from "./LibTokenizedVault.sol"; -import { LibERC20 } from "../../../erc20/LibERC20.sol"; -import { ExternalDepositAmountCannotBeZero, ExternalWithdrawAmountCannotBeZero } from "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { LibERC20 } from "./LibERC20.sol"; +import { ExternalDepositAmountCannotBeZero, ExternalWithdrawAmountCannotBeZero } from "../shared/CustomErrors.sol"; /** * @dev Adaptation of ERC-1155 that uses AppStorage and aligns with Nayms ACL implementation. * https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC1155 */ library LibTokenizedVaultIO { - function _externalDeposit( - bytes32 _receiverId, - address _externalTokenAddress, - uint256 _amount - ) internal { + function _externalDeposit(bytes32 _receiverId, address _externalTokenAddress, uint256 _amount) internal { if (_amount == 0) { revert ExternalDepositAmountCannotBeZero(); } @@ -34,12 +30,7 @@ library LibTokenizedVaultIO { LibTokenizedVault._internalMint(_receiverId, internalTokenId, mintAmount); } - function _externalWithdraw( - bytes32 _entityId, - address _receiver, - address _externalTokenAddress, - uint256 _amount - ) internal { + function _externalWithdraw(bytes32 _entityId, address _receiver, address _externalTokenAddress, uint256 _amount) internal { if (_amount == 0) { revert ExternalWithdrawAmountCannotBeZero(); } diff --git a/src/shared/AppStorage.sol b/src/shared/AppStorage.sol new file mode 100644 index 00000000..6d3807ba --- /dev/null +++ b/src/shared/AppStorage.sol @@ -0,0 +1,105 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +/// @notice storage for nayms v3 decentralized insurance platform + +// solhint-disable no-global-import +import "./FreeStructs.sol"; + +struct AppStorage { + // Has this diamond been initialized? + bool diamondInitialized; + //// EIP712 domain separator //// + uint256 initialChainId; + bytes32 initialDomainSeparator; + //// Reentrancy guard //// + uint256 reentrancyStatus; + //// NAYMS ERC20 TOKEN //// + string name; + mapping(address account => mapping(address spender => uint256)) allowance; + uint256 totalSupply; + mapping(bytes32 objectId => bool isInternalToken) internalToken; + mapping(address account => uint256) balances; + //// Object //// + mapping(bytes32 objectId => bool isObject) existingObjects; // objectId => is an object? + mapping(bytes32 objectId => bytes32 objectsParent) objectParent; // objectId => parentId + mapping(bytes32 objectId => bytes32 objectsDataHash) objectDataHashes; + mapping(bytes32 objectId => string tokenSymbol) objectTokenSymbol; + mapping(bytes32 objectId => string tokenName) objectTokenName; + mapping(bytes32 objectId => address tokenWrapperAddress) objectTokenWrapper; + mapping(bytes32 entityId => bool isEntity) existingEntities; // entityId => is an entity? + mapping(bytes32 policyId => bool isPolicy) existingSimplePolicies; // simplePolicyId => is a simple policy? + //// ENTITY //// + mapping(bytes32 entityId => Entity) entities; // objectId => Entity struct + //// SIMPLE POLICY //// + mapping(bytes32 policyId => SimplePolicy) simplePolicies; // objectId => SimplePolicy struct + //// External Tokens //// + mapping(address externalTokenAddress => bool isSupportedExternalToken) externalTokenSupported; + address[] supportedExternalTokens; + //// TokenizedObject //// + mapping(bytes32 tokenId => mapping(bytes32 ownerId => uint256)) tokenBalances; // tokenId => (ownerId => balance) + mapping(bytes32 tokenId => uint256) tokenSupply; // tokenId => Total Token Supply + //// Dividends //// + uint8 maxDividendDenominations; + mapping(bytes32 objectId => bytes32[]) dividendDenominations; // object => tokenId of the dividend it allows + mapping(bytes32 entityId => mapping(bytes32 tokenId => uint8 index)) dividendDenominationIndex; // entity ID => (token ID => index of dividend denomination) + mapping(bytes32 entityId => mapping(uint8 index => bytes32 tokenId)) dividendDenominationAtIndex; // entity ID => (index of dividend denomination => token id) + mapping(bytes32 tokenId => mapping(bytes32 dividendDenominationId => uint256)) totalDividends; // token ID => (denomination ID => total dividend) + mapping(bytes32 entityId => mapping(bytes32 tokenId => mapping(bytes32 ownerId => uint256))) withdrawnDividendPerOwner; // entity => (tokenId => (owner => total withdrawn dividend)) NOT per share!!! this is TOTAL + //// ACL Configuration//// + mapping(bytes32 roleId => mapping(bytes32 groupId => bool isRoleInGroup)) groups; //role => (group => isRoleInGroup) + mapping(bytes32 roleId => bytes32 assignerGroupId) canAssign; //role => Group that can assign/unassign that role + //// User Data //// + mapping(bytes32 objectId => mapping(bytes32 contextId => bytes32 roleId)) roles; // userId => (contextId => role) + //// MARKET //// + uint256 lastOfferId; + mapping(uint256 offerId => MarketInfo) offers; // offer Id => MarketInfo struct + mapping(bytes32 sellTokenId => mapping(bytes32 buyTokenId => uint256)) bestOfferId; // sell token => buy token => best offer Id + mapping(bytes32 sellTokenId => mapping(bytes32 buyTokenId => uint256)) span; // sell token => buy token => span + address naymsToken; // represents the address key for this NAYMS token in AppStorage + bytes32 naymsTokenId; // represents the bytes32 key for this NAYMS token in AppStorage + /// Trading Commissions (all in basis points) /// + uint16 tradingCommissionTotalBP; // note DEPRECATED // the total amount that is deducted for trading commissions (BP) + // The total commission above is further divided as follows: + uint16 tradingCommissionNaymsLtdBP; // note DEPRECATED + uint16 tradingCommissionNDFBP; // note DEPRECATED + uint16 tradingCommissionSTMBP; // note DEPRECATED + uint16 tradingCommissionMakerBP; + // Premium Commissions + uint16 premiumCommissionNaymsLtdBP; // note DEPRECATED + uint16 premiumCommissionNDFBP; // note DEPRECATED + uint16 premiumCommissionSTMBP; // note DEPRECATED + // A policy can pay out additional commissions on premiums to entities having a variety of roles on the policy + mapping(bytes32 ownerId => mapping(bytes32 tokenId => uint256)) lockedBalances; // keep track of token balance that is locked, ownerId => tokenId => lockedAmount + /// Simple two phase upgrade scheme + mapping(bytes32 upgradeId => uint256 timestamp) upgradeScheduled; // id of the upgrade => the time that the upgrade is valid until. + uint256 upgradeExpiration; // the period of time that an upgrade is valid until. + uint256 sysAdmins; // counter for the number of sys admin accounts currently assigned + mapping(address tokenWrapperAddress => bytes32 tokenId) objectTokenWrapperId; // reverse mapping token wrapper address => object ID + mapping(string tokenSymbol => bytes32 objectId) tokenSymbolObjectId; // reverse mapping token symbol => object ID, to ensure symbol uniqueness + mapping(bytes32 entityId => mapping(uint256 feeScheduleTypeId => FeeSchedule)) feeSchedules; // map entity ID to a fee schedule type and then to array of FeeReceivers (feeScheduleType (1-premium, 2-trading, n-others)) + mapping(bytes32 objectId => uint256 minimumSell) objectMinimumSell; // map object ID to minimum sell amount +} + +struct FunctionLockedStorage { + mapping(bytes4 => bool) locked; // function selector => is locked? +} + +library LibAppStorage { + bytes32 internal constant NAYMS_DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.nayms.storage"); + bytes32 internal constant FUNCTION_LOCK_STORAGE_POSITION = keccak256("diamond.function.lock.storage"); + + function diamondStorage() internal pure returns (AppStorage storage ds) { + bytes32 position = NAYMS_DIAMOND_STORAGE_POSITION; + assembly { + ds.slot := position + } + } + + function functionLockStorage() internal pure returns (FunctionLockedStorage storage ds) { + bytes32 position = FUNCTION_LOCK_STORAGE_POSITION; + assembly { + ds.slot := position + } + } +} diff --git a/src/diamonds/nayms/interfaces/CustomErrors.sol b/src/shared/CustomErrors.sol similarity index 83% rename from src/diamonds/nayms/interfaces/CustomErrors.sol rename to src/shared/CustomErrors.sol index d8ea30c1..273afde1 100644 --- a/src/diamonds/nayms/interfaces/CustomErrors.sol +++ b/src/shared/CustomErrors.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /// @dev The Nayms Diamond (proxy contract) owner (address) must be mutually exclusive with the system admin role. error OwnerCannotBeSystemAdmin(); @@ -40,11 +40,23 @@ error EntityDoesNotExist(bytes32 objectId); /// @dev Cannot create an entity that already exists. error CreatingEntityThatAlreadyExists(bytes32 entityId); +/// @dev The object type is not supported in this function call. +error InvalidObjectType(bytes32 objectId, bytes12 objectType); + +/// @dev The object ID being passed in is expected to be an address type, but the bottom (least significant) 12 bytes are not empty. +error InvalidObjectIdForAddress(bytes32 objectId); + /// @dev (non specific) the object is not enabled to be tokenized. error ObjectCannotBeTokenized(bytes32 objectId); -/// @dev Passing in a missing symbol when trying to enable an object to be tokenized. -error MissingSymbolWhenEnablingTokenization(bytes32 objectId); +/// @dev Provided token symbol is not valid. +error ObjectTokenSymbolInvalid(bytes32 objectId, string symbol); + +/// @dev Provided token symbol is already being used. +error ObjectTokenSymbolAlreadyInUse(bytes32 objectId, string symbol); + +/// @dev Provided token name is not valid. +error ObjectTokenNameInvalid(bytes32 objectId, string symbol); /// @dev Passing in 0 amount for deposits is not allowed. error ExternalDepositAmountCannotBeZero(); @@ -86,5 +98,11 @@ error CancelCannotBeTrueWhenCreatingSimplePolicy(); /// @dev (non specific) The policyId must exist. error PolicyDoesNotExist(bytes32 policyId); +/// @dev It is not possible to cancel policyId after maturation date has passed +error PolicyCannotCancelAfterMaturation(bytes32 policyId); + /// @dev There is a duplicate address in the list of signers (the previous signer in the list is not < the next signer in the list). error DuplicateSignerCreatingSimplePolicy(address previousSigner, address nextSigner); + +/// @dev The minimum sell amount on the marketplace cannot be zero. +error MinimumSellCannotBeZero(); diff --git a/src/diamonds/nayms/interfaces/FreeStructs.sol b/src/shared/FreeStructs.sol similarity index 99% rename from src/diamonds/nayms/interfaces/FreeStructs.sol rename to src/shared/FreeStructs.sol index 2548f838..dd85905f 100644 --- a/src/diamonds/nayms/interfaces/FreeStructs.sol +++ b/src/shared/FreeStructs.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; struct MarketInfo { bytes32 creator; // entity ID diff --git a/src/diamonds/nayms/Modifiers.sol b/src/shared/Modifiers.sol similarity index 83% rename from src/diamonds/nayms/Modifiers.sol rename to src/shared/Modifiers.sol index c756bcdd..3b0c90b2 100644 --- a/src/diamonds/nayms/Modifiers.sol +++ b/src/shared/Modifiers.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; /// @notice modifiers -import { LibAdmin } from "./libs/LibAdmin.sol"; -import { LibConstants as LC } from "./libs/LibConstants.sol"; -import { LibHelpers } from "./libs/LibHelpers.sol"; -import { LibObject } from "./libs/LibObject.sol"; -import { LibACL } from "./libs/LibACL.sol"; -import { InvalidGroupPrivilege } from "./interfaces/CustomErrors.sol"; +import { LibAdmin } from "../libs/LibAdmin.sol"; +import { LibConstants as LC } from "../libs/LibConstants.sol"; +import { LibHelpers } from "../libs/LibHelpers.sol"; +import { LibObject } from "../libs/LibObject.sol"; +import { LibACL } from "../libs/LibACL.sol"; +import { InvalidGroupPrivilege } from "./CustomErrors.sol"; /** * @title Modifiers diff --git a/src/utils/Create3Deployer.sol b/src/utils/Create3Deployer.sol index 9c9b765a..d544c230 100644 --- a/src/utils/Create3Deployer.sol +++ b/src/utils/Create3Deployer.sol @@ -1,14 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { CREATE3 } from "solmate/utils/CREATE3.sol"; contract Create3Deployer { - function deployContract( - bytes32 salt, - bytes memory creationCode, - uint256 value - ) external returns (address deployed) { + function deployContract(bytes32 salt, bytes memory creationCode, uint256 value) external returns (address deployed) { deployed = CREATE3.deploy(salt, creationCode, value); } diff --git a/src/erc20/ERC20Wrapper.sol b/src/utils/ERC20Wrapper.sol similarity index 90% rename from src/erc20/ERC20Wrapper.sol rename to src/utils/ERC20Wrapper.sol index b2136499..1ce2c9e6 100644 --- a/src/erc20/ERC20Wrapper.sol +++ b/src/utils/ERC20Wrapper.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { IERC20 } from "./IERC20.sol"; -import { INayms } from "../diamonds/nayms/INayms.sol"; -import { LibHelpers } from "../diamonds/nayms/libs/LibHelpers.sol"; +import { IERC20 } from "../interfaces/IERC20.sol"; +import { IDiamondProxy } from "../generated/IDiamondProxy.sol"; +import { LibHelpers } from "../libs/LibHelpers.sol"; import { ReentrancyGuard } from "../utils/ReentrancyGuard.sol"; contract ERC20Wrapper is IERC20, ReentrancyGuard { @@ -11,7 +11,7 @@ contract ERC20Wrapper is IERC20, ReentrancyGuard { ERC20 STORAGE //////////////////////////////////////////////////////////////*/ bytes32 internal immutable tokenId; - INayms internal immutable nayms; + IDiamondProxy internal immutable nayms; mapping(address => mapping(address => uint256)) public allowances; /*////////////////////////////////////////////////////////////// @@ -23,7 +23,7 @@ contract ERC20Wrapper is IERC20, ReentrancyGuard { constructor(bytes32 _tokenId) { // ensure only diamond can instantiate this - nayms = INayms(msg.sender); + nayms = IDiamondProxy(msg.sender); require(nayms.isObjectTokenizable(_tokenId), "must be tokenizable"); require(!nayms.isTokenWrapped(_tokenId), "must not be wrapped already"); @@ -93,11 +93,7 @@ contract ERC20Wrapper is IERC20, ReentrancyGuard { return true; } - function transferFrom( - address from, - address to, - uint256 value - ) external nonReentrant returns (bool) { + function transferFrom(address from, address to, uint256 value) external nonReentrant returns (bool) { if (value == 0) { revert(); } @@ -117,15 +113,7 @@ contract ERC20Wrapper is IERC20, ReentrancyGuard { } // refer to https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol#L116 - function permit( - address owner, - address spender, - uint256 value, - uint256 deadline, - uint8 v, - bytes32 r, - bytes32 s - ) external { + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED"); // Unchecked because the only math done is incrementing diff --git a/src/utils/ReentrancyGuard.sol b/src/utils/ReentrancyGuard.sol index 72b138eb..933ea3e9 100644 --- a/src/utils/ReentrancyGuard.sol +++ b/src/utils/ReentrancyGuard.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { LibAppStorage } from "src/diamonds/nayms/AppStorage.sol"; +import { LibAppStorage } from "../shared/AppStorage.sol"; // From OpenZeppelin: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol diff --git a/test/NewFees.t.sol b/test/NewFees.t.sol index c8c77ea4..752183ff 100644 --- a/test/NewFees.t.sol +++ b/test/NewFees.t.sol @@ -1,14 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; // solhint-disable no-console import { console2 } from "forge-std/console2.sol"; import { D03ProtocolDefaults, LC } from "./defaults/D03ProtocolDefaults.sol"; -import { Entity, FeeSchedule, CalculatedFees } from "../src/diamonds/nayms/AppStorage.sol"; -import { SimplePolicy, SimplePolicyInfo, Stakeholders } from "src/diamonds/nayms/interfaces/FreeStructs.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; -import { LibHelpers } from "src/diamonds/nayms/libs/LibHelpers.sol"; +import { Entity, FeeSchedule, CalculatedFees } from "../src/shared/AppStorage.sol"; +import { SimplePolicy, SimplePolicyInfo, Stakeholders } from "../src/shared/FreeStructs.sol"; +import "src/shared/CustomErrors.sol"; +import { LibHelpers } from "src/libs/LibHelpers.sol"; import { LibFeeRouterFixture } from "test/fixtures/LibFeeRouterFixture.sol"; @@ -44,22 +44,13 @@ contract NewFeesTest is D03ProtocolDefaults { nayms.createEntity(acc2.entityId, acc2.id, entityInfo, testHash); nayms.createEntity(acc3.entityId, acc3.id, entityInfo, testHash); - nayms.enableEntityTokenization(acc1.entityId, "ESPT", "Entity Selling Par Tokens"); + nayms.enableEntityTokenization(acc1.entityId, "ESPT", "Entity Selling Par Tokens", 1e6); (stakeholders, simplePolicy) = initPolicy(testHash); changePrank(sa.addr); } - function fundEntityWeth(NaymsAccount memory acc, uint256 amount) private { - deal(address(weth), acc.addr, amount); - changePrank(acc.addr); - weth.approve(address(nayms), amount); - uint256 balanceBefore = nayms.internalBalanceOf(acc.entityId, wethId); - nayms.externalDeposit(address(weth), amount); - assertEq(nayms.internalBalanceOf(acc.entityId, wethId), balanceBefore + amount, "entity's weth balance is incorrect"); - } - function test_setFeeSchedule_OnlySystemAdmin() public { changePrank(address(0xdead)); @@ -214,7 +205,7 @@ contract NewFeesTest is D03ProtocolDefaults { fundEntityWeth(acc1, 1 ether); changePrank(su.addr); - bytes32 policyId = "policy1"; + bytes32 policyId = makeId(LC.OBJECT_TYPE_POLICY, bytes20("policy1")); nayms.createSimplePolicy(policyId, acc1.entityId, stakeholders, simplePolicy, testHash); uint256 premiumPaid = 1e18; @@ -228,12 +219,7 @@ contract NewFeesTest is D03ProtocolDefaults { assertEq(cf.feeAllocations.length, simplePolicy.commissionReceivers.length + customRecipient.length, "fee allocation length incorrect"); } - function test_calculatePremiumFees_MultipleReceivers( - uint16 _fee, - uint16 _fee1, - uint16 _fee2, - uint16 _fee3 - ) public { + function test_calculatePremiumFees_MultipleReceivers(uint16 _fee, uint16 _fee1, uint16 _fee2, uint16 _fee3) public { vm.assume(0 <= _fee && _fee <= LC.BP_FACTOR / 2); vm.assume(_fee1 < LC.BP_FACTOR / 2 && _fee2 < LC.BP_FACTOR / 2 && _fee3 < LC.BP_FACTOR / 2); vm.assume(0 <= (_fee1 + _fee2 + _fee3) && (_fee1 + _fee2 + _fee3) <= LC.BP_FACTOR / 2); @@ -245,7 +231,7 @@ contract NewFeesTest is D03ProtocolDefaults { fundEntityWeth(acc1, 1 ether); changePrank(su.addr); - bytes32 policyId = "policy1"; + bytes32 policyId = makeId(LC.OBJECT_TYPE_POLICY, bytes20("policy1")); nayms.createSimplePolicy(policyId, acc1.entityId, stakeholders, simplePolicy, testHash); uint256 _premiumPaid = 1e18; @@ -281,7 +267,7 @@ contract NewFeesTest is D03ProtocolDefaults { fundEntityWeth(acc1, 1 ether); changePrank(su.addr); - bytes32 policyId = "policy1"; + bytes32 policyId = makeId(LC.OBJECT_TYPE_POLICY, bytes20("policy1")); nayms.createSimplePolicy(policyId, acc1.entityId, stakeholders, simplePolicy, testHash); uint256 premiumAmount = 1 ether; diff --git a/test/ReplaceDiamondCut.t.sol b/test/ReplaceDiamondCut.t.sol index c0aedceb..34438342 100644 --- a/test/ReplaceDiamondCut.t.sol +++ b/test/ReplaceDiamondCut.t.sol @@ -1,97 +1,97 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; - -import { Test } from "forge-std/Test.sol"; - -import { IDiamondCut } from "src/diamonds/nayms/INayms.sol"; - -import { S01DeployContract } from "script/deployment/S01DeployContract.s.sol"; -import { S02ScheduleUpgrade } from "script/deployment/S02ScheduleUpgrade.s.sol"; - -/// @dev Testing the new simplified contract deployment and upgrade process. -/// Mainnet Nayms diamond 0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5 at block 17276760 is using the -/// old phased diamondCut() method which only hashes the cut struct. -/// We test the replacement of the old phased diamondCut() method with the new phased diamondCut() method. - -interface IS03UpgradeDiamond { - function run(address _ownerAddress) external; -} - -contract ReplaceDiamondCutTestHelpers is Test { - function runPrepUpgrade(string memory broadcastFile) public { - string[] memory cmd = new string[](3); - cmd[0] = "node"; - cmd[1] = "./cli-tools/prep-upgrade.js"; - cmd[2] = broadcastFile; - vm.ffi(cmd); - } - - function compileCode() public { - string[] memory cmd = new string[](4); - cmd[0] = "forge"; - cmd[1] = "build"; - cmd[2] = "--skip"; - cmd[3] = "test"; - vm.ffi(cmd); - } -} - -contract ReplaceDiamondCutTest is ReplaceDiamondCutTestHelpers { - S01DeployContract public deploy; - S02ScheduleUpgrade public schedule; - - address public ownerAddress = 0xd5c10a9a09B072506C7f062E4f313Af29AdD9904; - address public systemAdminAddress = 0xE6aD24478bf7E1C0db07f7063A4019C83b1e5929; - - address public constant MOCK_DATA_ADDRESS_DIAMOND_CUT = 0x76a3bE902A115374d1Ab57d4d6aA7c7AD5929bA5; - address public constant MOCK_DATA_ADDRESS_TOKENIZED_VAULT = 0x7041459fa01deAcE1EB86d1a3507C2F43b9051c5; - - function setUp() public { - vm.label(ownerAddress, "owner"); - vm.label(systemAdminAddress, "system admin"); - - vm.createSelectFork("mainnet", 17276760); - vm.chainId(1); - deploy = new S01DeployContract(); - schedule = new S02ScheduleUpgrade(); - } - - // note This test overwrites the file in script/deployment/S03UpgradeDiamond.s.sol - function testReplaceDiamondCut() public { - // Deploy contract - (IDiamondCut.FacetCut[] memory cut, bytes32 upgradeHash, bytes32 upgradeHashOld) = deploy.run("PhasedDiamondCutFacet"); - - // Schedule upgrade - schedule.run(systemAdminAddress, upgradeHashOld); - - // note hardcode where the new contracts for upgrades are deployed to make the test resistent to changes in new contract address calculations - vm.etch(MOCK_DATA_ADDRESS_DIAMOND_CUT, vm.getDeployedCode("PhasedDiamondCutFacet.sol:PhasedDiamondCutFacet")); - - runPrepUpgrade("test/mocks/data/facet-cut-struct-1.json"); - - // Upgrade diamond - upgrade(ownerAddress); - - // Try upgrading with the new diamond cut - (cut, upgradeHash, upgradeHashOld) = deploy.run("TokenizedVaultIOFacet"); - - vm.etch(MOCK_DATA_ADDRESS_TOKENIZED_VAULT, vm.getDeployedCode("TokenizedVaultIOFacet.sol:TokenizedVaultIOFacet")); - - // note Start using new upgradeHash calculation - schedule.run(systemAdminAddress, upgradeHash); - - // Deploy the new upgrade script - runPrepUpgrade("test/mocks/data/facet-cut-struct-2.json"); - - upgrade(ownerAddress); - } - - function upgrade(address _ownerAddress) public { - // Compile the script after generating it - compileCode(); - // Deploy the new upgrade script - address upgradeScriptAddress = deployCode("forge-artifacts/S03UpgradeDiamond.s.sol/S03UpgradeDiamond.json"); - IS03UpgradeDiamond upgradeScript = IS03UpgradeDiamond(upgradeScriptAddress); - upgradeScript.run(_ownerAddress); - } -} +pragma solidity 0.8.20; + +// import { Test } from "forge-std/Test.sol"; + +// import { IDiamondCut } from "lib/diamond-2-hardhats/nayms/INayms.sol"; + +// import { S01DeployContract } from "script/deployment/S01DeployContract.s.sol"; +// import { S02ScheduleUpgrade } from "script/deployment/S02ScheduleUpgrade.s.sol"; + +// /// @dev Testing the new simplified contract deployment and upgrade process. +// /// Mainnet Nayms diamond 0x39e2f550fef9ee15b459d16bD4B243b04b1f60e5 at block 17276760 is using the +// /// old phased diamondCut() method which only hashes the cut struct. +// /// We test the replacement of the old phased diamondCut() method with the new phased diamondCut() method. + +// interface IS03UpgradeDiamond { +// function run(address _ownerAddress) external; +// } + +// contract ReplaceDiamondCutTestHelpers is Test { +// function runPrepUpgrade(string memory broadcastFile) public { +// string[] memory cmd = new string[](3); +// cmd[0] = "node"; +// cmd[1] = "./cli-tools/prep-upgrade.js"; +// cmd[2] = broadcastFile; +// vm.ffi(cmd); +// } + +// function compileCode() public { +// string[] memory cmd = new string[](4); +// cmd[0] = "forge"; +// cmd[1] = "build"; +// cmd[2] = "--skip"; +// cmd[3] = "test"; +// vm.ffi(cmd); +// } +// } + +// contract ReplaceDiamondCutTest is ReplaceDiamondCutTestHelpers { +// S01DeployContract public deploy; +// S02ScheduleUpgrade public schedule; + +// address public ownerAddress = 0xd5c10a9a09B072506C7f062E4f313Af29AdD9904; +// address public systemAdminAddress = 0xE6aD24478bf7E1C0db07f7063A4019C83b1e5929; + +// address public constant MOCK_DATA_ADDRESS_DIAMOND_CUT = 0x76a3bE902A115374d1Ab57d4d6aA7c7AD5929bA5; +// address public constant MOCK_DATA_ADDRESS_TOKENIZED_VAULT = 0x7041459fa01deAcE1EB86d1a3507C2F43b9051c5; + +// function setUp() public { +// vm.label(ownerAddress, "owner"); +// vm.label(systemAdminAddress, "system admin"); +// } + +// // note This test overwrites the file in script/deployment/S03UpgradeDiamond.s.sol +// function testReplaceDiamondCut() public { +// // Deploy contract +// vm.createSelectFork("mainnet", 17276760); +// vm.chainId(1); +// deploy = new S01DeployContract(); +// schedule = new S02ScheduleUpgrade(); +// // Deploy contract +// (IDiamondCut.FacetCut[] memory cut, bytes32 upgradeHash, bytes32 upgradeHashOld) = deploy.run("PhasedDiamondCutFacet"); + +// // Schedule upgrade +// schedule.run(systemAdminAddress, upgradeHashOld); + +// // note hardcode where the new contracts for upgrades are deployed to make the test resistent to changes in new contract address calculations +// vm.etch(MOCK_DATA_ADDRESS_DIAMOND_CUT, vm.getDeployedCode("PhasedDiamondCutFacet.sol:PhasedDiamondCutFacet")); + +// runPrepUpgrade("test/mocks/data/facet-cut-struct-1.json"); + +// // Upgrade diamond +// upgrade(ownerAddress); + +// // Try upgrading with the new diamond cut +// (cut, upgradeHash, upgradeHashOld) = deploy.run("TokenizedVaultIOFacet"); + +// vm.etch(MOCK_DATA_ADDRESS_TOKENIZED_VAULT, vm.getDeployedCode("TokenizedVaultIOFacet.sol:TokenizedVaultIOFacet")); + +// // note Start using new upgradeHash calculation +// schedule.run(systemAdminAddress, upgradeHash); + +// // Deploy the new upgrade script +// runPrepUpgrade("test/mocks/data/facet-cut-struct-2.json"); + +// upgrade(ownerAddress); +// } + +// function upgrade(address _ownerAddress) public { +// // Compile the script after generating it +// compileCode(); +// // Deploy the new upgrade script +// address upgradeScriptAddress = deployCode("forge-artifacts/S03UpgradeDiamond.s.sol/S03UpgradeDiamond.json"); +// IS03UpgradeDiamond upgradeScript = IS03UpgradeDiamond(upgradeScriptAddress); +// upgradeScript.run(_ownerAddress); +// } +// } diff --git a/test/T01Deployment.t.sol b/test/T01Deployment.t.sol index ef053faf..6fd3a7c3 100644 --- a/test/T01Deployment.t.sol +++ b/test/T01Deployment.t.sol @@ -1,29 +1,20 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { StdStorage, stdStorage } from "forge-std/Test.sol"; import { Vm } from "forge-std/Vm.sol"; import { D03ProtocolDefaults } from "./defaults/D03ProtocolDefaults.sol"; import { InitDiamondFixture } from "./fixtures/InitDiamondFixture.sol"; -import { INayms, IDiamondLoupe } from "src/diamonds/nayms/INayms.sol"; -import { DiamondAlreadyInitialized } from "src/diamonds/nayms/InitDiamond.sol"; - -import { IERC165 } from "../src/diamonds/shared/interfaces/IERC165.sol"; -import { IDiamondCut } from "../src/diamonds/shared/interfaces/IDiamondCut.sol"; -import { IERC173 } from "../src/diamonds/shared/interfaces/IERC173.sol"; -import { IERC20 } from "../src/erc20/IERC20.sol"; -import { IACLFacet } from "../src/diamonds/nayms/interfaces/IACLFacet.sol"; -import { IAdminFacet } from "../src/diamonds/nayms/interfaces/IAdminFacet.sol"; -import { IEntityFacet } from "../src/diamonds/nayms/interfaces/IEntityFacet.sol"; -import { IMarketFacet } from "../src/diamonds/nayms/interfaces/IMarketFacet.sol"; -import { INaymsTokenFacet } from "../src/diamonds/nayms/interfaces/INaymsTokenFacet.sol"; -import { ISimplePolicyFacet } from "../src/diamonds/nayms/interfaces/ISimplePolicyFacet.sol"; -import { ISystemFacet } from "../src/diamonds/nayms/interfaces/ISystemFacet.sol"; -import { ITokenizedVaultFacet } from "../src/diamonds/nayms/interfaces/ITokenizedVaultFacet.sol"; -import { ITokenizedVaultIOFacet } from "../src/diamonds/nayms/interfaces/ITokenizedVaultIOFacet.sol"; -import { IUserFacet } from "../src/diamonds/nayms/interfaces/IUserFacet.sol"; -import { IGovernanceFacet } from "../src/diamonds/nayms/interfaces/IGovernanceFacet.sol"; +import { IDiamondLoupe } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondLoupe.sol"; +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; +import { IDiamondProxy } from "src/generated/IDiamondProxy.sol"; +import { DiamondAlreadyInitialized } from "src/init/InitDiamond.sol"; +import { LibGovernance } from "src/libs/LibGovernance.sol"; + +import { IERC165 } from "lib/diamond-2-hardhat/contracts/interfaces/IERC165.sol"; +import { IERC173 } from "lib/diamond-2-hardhat/contracts/interfaces/IERC173.sol"; +import { IERC20 } from "../src/interfaces/IERC20.sol"; contract T01DeploymentTest is D03ProtocolDefaults { using stdStorage for StdStorage; @@ -50,7 +41,7 @@ contract T01DeploymentTest is D03ProtocolDefaults { changePrank(owner); vm.recordLogs(); - fixture.initialize(); + fixture.init(systemAdmin); // check logs Vm.Log[] memory entries = vm.getRecordedLogs(); @@ -72,15 +63,15 @@ contract T01DeploymentTest is D03ProtocolDefaults { /// @dev For a new diamond using the InitDiamond only. function testCallInitDiamondTwice() public skipWhenForking { // note: Cannot use the InitDiamond contract more than once to initialize a diamond. - INayms.FacetCut[] memory cut; + IDiamondCut.FacetCut[] memory cut; - bytes32 upgradeHash = keccak256(abi.encode(cut, address(initDiamond), abi.encodeCall(initDiamond.initialize, ()))); + bytes32 upgradeHash = LibGovernance._calculateUpgradeId(cut, address(initDiamond), abi.encodeCall(initDiamond.init, (systemAdmin))); changePrank(systemAdmin); nayms.createUpgrade(upgradeHash); changePrank(owner); vm.expectRevert(abi.encodePacked(DiamondAlreadyInitialized.selector)); - nayms.diamondCut(cut, address(initDiamond), abi.encodeCall(initDiamond.initialize, ())); + nayms.diamondCut(cut, address(initDiamond), abi.encodeCall(initDiamond.init, (systemAdmin))); } function test_supportsInterface() public { @@ -89,17 +80,5 @@ contract T01DeploymentTest is D03ProtocolDefaults { assertTrue(nayms.supportsInterface(type(IDiamondLoupe).interfaceId)); assertTrue(nayms.supportsInterface(type(IERC173).interfaceId)); assertTrue(nayms.supportsInterface(type(IERC20).interfaceId)); - - assertTrue(nayms.supportsInterface(type(IACLFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(IAdminFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(IEntityFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(IGovernanceFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(IMarketFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(INaymsTokenFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(ISimplePolicyFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(ISystemFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(ITokenizedVaultFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(ITokenizedVaultIOFacet).interfaceId)); - assertTrue(nayms.supportsInterface(type(IUserFacet).interfaceId)); } } diff --git a/test/T01GovernanceUpgrades.t.sol b/test/T01GovernanceUpgrades.t.sol index c2f1f049..820da411 100644 --- a/test/T01GovernanceUpgrades.t.sol +++ b/test/T01GovernanceUpgrades.t.sol @@ -1,12 +1,15 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { D03ProtocolDefaults, LC } from "./defaults/D03ProtocolDefaults.sol"; import { MockAccounts } from "test/utils/users/MockAccounts.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; -import { IDiamondCut } from "src/diamonds/shared/interfaces/IDiamondCut.sol"; -import { PhasedDiamondCutFacet, PhasedDiamondCutUpgradeFailed } from "src/diamonds/shared/facets/PhasedDiamondCutFacet.sol"; -import { LibHelpers } from "src/diamonds/nayms/libs/LibHelpers.sol"; +import "../src/shared/CustomErrors.sol"; + +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; +import { LibGovernance } from "src/libs/LibGovernance.sol"; +import { LibHelpers } from "src/libs/LibHelpers.sol"; + +import { PhasedDiamondCutUpgradeFailed } from "src/facets/PhasedDiamondCutFacet.sol"; /// @dev Testing for Nayms upgrade pattern @@ -48,7 +51,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { cut[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f0 }); // try to call diamondCut() without scheduling - bytes32 upgradeId = keccak256(abi.encode(cut, address(0), "")); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(cut, address(0), ""); vm.expectRevert(abi.encodeWithSelector(PhasedDiamondCutUpgradeFailed.selector, upgradeId, block.timestamp)); nayms.diamondCut(cut, address(0), ""); } @@ -62,7 +65,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { vm.warp(7 days + STARTING_BLOCK_TIMESTAMP + 1); // try to call diamondCut() without scheduling - bytes32 upgradeId = keccak256(abi.encode(cut, address(0), "")); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(cut, address(0), ""); vm.expectRevert(abi.encodeWithSelector(PhasedDiamondCutUpgradeFailed.selector, upgradeId, block.timestamp)); nayms.diamondCut(cut, address(0), ""); } @@ -73,7 +76,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { f0[0] = TestFacet.sayHello.selector; cut[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f0 }); - bytes32 upgradeId = keccak256(abi.encode(cut, address(0), "")); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(cut, address(0), ""); nayms.createUpgrade(upgradeId); changePrank(owner); @@ -91,7 +94,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { f0[0] = TestFacet.sayHello.selector; cut[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f0 }); - bytes32 upgradeId = keccak256(abi.encode(cut, address(0), "")); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(cut, address(0), ""); nayms.createUpgrade(upgradeId); changePrank(address(0xAAAAAAAAA)); @@ -105,7 +108,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { f0[0] = TestFacet.sayHello.selector; cut[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f0 }); - bytes32 upgradeId = keccak256(abi.encode(cut, address(0), "")); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(cut, address(0), ""); vm.expectRevert("invalid upgrade ID"); nayms.cancelUpgrade(upgradeId); @@ -124,7 +127,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { f0[0] = TestFacet.sayHello.selector; cut[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f0 }); - bytes32 upgradeId = keccak256(abi.encode(cut, address(0), "")); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(cut, address(0), ""); nayms.createUpgrade(upgradeId); vm.expectRevert("Upgrade has already been scheduled"); @@ -142,7 +145,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { f0[0] = TestFacet.sayHello.selector; cut[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f0 }); - bytes32 upgradeId = keccak256(abi.encode(cut, address(0), "")); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(cut, address(0), ""); nayms.createUpgrade(upgradeId); // cut in the method sayHello2() @@ -151,7 +154,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { f1[0] = TestFacet.sayHello2.selector; cut2[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f1 }); - bytes32 upgradeId2 = keccak256(abi.encode(cut2, address(0), "")); + bytes32 upgradeId2 = LibGovernance._calculateUpgradeId(cut2, address(0), ""); nayms.createUpgrade(upgradeId2); changePrank(owner); @@ -167,7 +170,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { f0[0] = TestFacet.sayHello.selector; cut[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f0 }); - bytes32 upgradeId = keccak256(abi.encode(cut, address(0), "")); + bytes32 upgradeId = LibGovernance._calculateUpgradeId(cut, address(0), ""); nayms.createUpgrade(upgradeId); changePrank(address(0xAAAAAAAAA)); @@ -190,7 +193,7 @@ contract T01GovernanceUpgrades is D03ProtocolDefaults, MockAccounts { f1[0] = TestFacet.sayHello2.selector; cut2[0] = IDiamondCut.FacetCut({ facetAddress: address(testFacetAddress), action: IDiamondCut.FacetCutAction.Add, functionSelectors: f1 }); - bytes32 upgradeId2 = keccak256(abi.encode(cut2, address(0), "")); + bytes32 upgradeId2 = LibGovernance._calculateUpgradeId(cut2, address(0), ""); nayms.createUpgrade(upgradeId2); assertEq(block.timestamp + 1 days, nayms.getUpgrade(upgradeId2)); } diff --git a/test/T01LibERC20.t.sol b/test/T01LibERC20.t.sol index c6760061..b9efd51e 100644 --- a/test/T01LibERC20.t.sol +++ b/test/T01LibERC20.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; // solhint-disable no-global-import import { Vm } from "forge-std/Vm.sol"; @@ -7,7 +7,8 @@ import { D03ProtocolDefaults } from "./defaults/D03ProtocolDefaults.sol"; import { DummyToken } from "./utils/DummyToken.sol"; import { BadToken } from "./utils/BadToken.sol"; import { LibERC20Fixture } from "./fixtures/LibERC20Fixture.sol"; -import { IDiamondCut } from "src/diamonds/nayms/INayms.sol"; + +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; contract T01LibERC20 is D03ProtocolDefaults { DummyToken private token; diff --git a/test/T01LibHelpers.t.sol b/test/T01LibHelpers.t.sol index adfff01d..9922ef36 100644 --- a/test/T01LibHelpers.t.sol +++ b/test/T01LibHelpers.t.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { Test } from "forge-std/Test.sol"; import { Vm } from "forge-std/Vm.sol"; -import { LibHelpers } from "../src/diamonds/nayms/libs/LibHelpers.sol"; +import { LibHelpers } from "../src/libs/LibHelpers.sol"; contract T01LibHelpers is Test { function testGetIdForObjectAtIndexFuzz(uint256 i) public { @@ -23,7 +23,7 @@ contract T01LibHelpers is Test { bytes32 bottom12Bytes = id & mask; if (bottom12Bytes != 0) { - vm.expectRevert("Invalid external token address"); + vm.expectRevert("Invalid address based ID"); assertEq(LibHelpers._getAddressFromId(id), address(bytes20(id))); } else { assertEq(LibHelpers._getAddressFromId(id), address(bytes20(id))); diff --git a/test/T02ACL.t.sol b/test/T02ACL.t.sol index d65c7af1..7cf02df2 100644 --- a/test/T02ACL.t.sol +++ b/test/T02ACL.t.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { console2 } from "forge-std/console2.sol"; import { D03ProtocolDefaults, LibHelpers, LC } from "./defaults/D03ProtocolDefaults.sol"; import { MockAccounts } from "test/utils/users/MockAccounts.sol"; import { Vm } from "forge-std/Vm.sol"; -import { Entity } from "../src/diamonds/nayms/AppStorage.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { Entity } from "../src/shared/AppStorage.sol"; +import "../src/shared/CustomErrors.sol"; import { DSILib } from "test/utils/DSILib.sol"; /// @dev Testing for Nayms RBAC - Access Control List (ACL) @@ -293,13 +293,13 @@ contract T02ACLTest is D03ProtocolDefaults, MockAccounts { // create entity with signer2 as child bytes32 entityId1 = createTestEntity(signer2Id); - changePrank(sa.addr); - // assign entity as entity admin - nayms.assignRole(entityId1, systemContext, role); + // changePrank(sa.addr); + // // assign entity as entity admin + // nayms.assignRole(entityId1, systemContext, role); - // test parent - assertTrue(nayms.isInGroup(entityId1, systemContext, group)); - assertTrue(nayms.isParentInGroup(signer2Id, systemContext, group)); + // // test parent + // assertTrue(nayms.isInGroup(entityId1, systemContext, group)); + // assertTrue(nayms.isParentInGroup(signer2Id, systemContext, group)); } function testUpdateRoleAssignerFailIfNotAdmin() public { diff --git a/test/T02Access.t.sol b/test/T02Access.t.sol index ee2fcec0..e46fb6ba 100644 --- a/test/T02Access.t.sol +++ b/test/T02Access.t.sol @@ -1,9 +1,9 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; // import { c as c } from "forge-std/c.sol"; import { D03ProtocolDefaults, LibHelpers, LC, c } from "./defaults/D03ProtocolDefaults.sol"; -import { Entity, SimplePolicy, Stakeholders } from "src/diamonds/nayms/interfaces/FreeStructs.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { Entity, SimplePolicy, Stakeholders } from "src/shared/FreeStructs.sol"; +import "src/shared/CustomErrors.sol"; // updateRoleGroup | isRoleInGroup | groups [role][group] = bool // updateRoleAssigner | canGroupAssignRole | canAssign [role] = group diff --git a/test/T02Admin.t.sol b/test/T02Admin.t.sol index b6c16b99..13e5af61 100644 --- a/test/T02Admin.t.sol +++ b/test/T02Admin.t.sol @@ -1,13 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { D03ProtocolDefaults, LibHelpers, LC } from "./defaults/D03ProtocolDefaults.sol"; -import { Entity } from "src/diamonds/nayms/interfaces/FreeStructs.sol"; +import { Entity } from "../src/shared/FreeStructs.sol"; import { MockAccounts } from "test/utils/users/MockAccounts.sol"; import { Vm } from "forge-std/Vm.sol"; -import { IDiamondCut, IEntityFacet, IMarketFacet, ITokenizedVaultFacet, ITokenizedVaultIOFacet, ISimplePolicyFacet } from "src/diamonds/nayms/INayms.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { IDiamondProxy } from "../src/generated/IDiamondProxy.sol"; +import "../src/shared/CustomErrors.sol"; contract T02AdminTest is D03ProtocolDefaults, MockAccounts { using LibHelpers for *; @@ -57,13 +57,13 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { function testAddSupportedExternalTokenFailIfNotAdmin() public { changePrank(account1); vm.expectRevert(abi.encodeWithSelector(InvalidGroupPrivilege.selector, account1._getIdForAddress(), systemContext, "", LC.GROUP_SYSTEM_ADMINS)); - nayms.addSupportedExternalToken(wethAddress); + nayms.addSupportedExternalToken(wethAddress, 1e13); vm.stopPrank(); } function testAddSupportedExternalTokenFailIfTokenAddressHasNoCode() public { vm.expectRevert("LibERC20: ERC20 token address has no code"); - nayms.addSupportedExternalToken(address(0xdddddaaaaa)); + nayms.addSupportedExternalToken(address(0xdddddaaaaa), 1e13); } function testAddSupportedExternalToken() public { @@ -71,7 +71,7 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { vm.recordLogs(); - nayms.addSupportedExternalToken(wbtcAddress); + nayms.addSupportedExternalToken(wbtcAddress, 1e13); address[] memory v = nayms.getSupportedExternalTokens(); assertEq(v.length, orig.length + 1); assertEq(v[v.length - 1], wbtcAddress); @@ -87,7 +87,7 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { assertFalse(nayms.isSupportedExternalToken(id)); - nayms.addSupportedExternalToken(wbtcAddress); + nayms.addSupportedExternalToken(wbtcAddress, 1e13); assertTrue(nayms.isSupportedExternalToken(id)); } @@ -95,11 +95,11 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { function testSupportedTokenSymbolUnique() public { changePrank(sm.addr); bytes32 entityId = createTestEntity(account0Id); - nayms.enableEntityTokenization(entityId, "WBTC", "Entity1 Token"); + nayms.enableEntityTokenization(entityId, wbtc.symbol(), "Entity1 Token", 1e6); changePrank(sa.addr); - vm.expectRevert("token symbol already in use"); - nayms.addSupportedExternalToken(wbtcAddress); + vm.expectRevert(abi.encodeWithSelector(ObjectTokenSymbolAlreadyInUse.selector, LibHelpers._getIdForAddress(wbtcAddress), wbtc.symbol())); + nayms.addSupportedExternalToken(wbtcAddress, 1e13); } function testAddSupportedExternalTokenIfAlreadyAdded() public { @@ -107,7 +107,7 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { vm.recordLogs(); - nayms.addSupportedExternalToken(wbtcAddress); + nayms.addSupportedExternalToken(wbtcAddress, 1e13); address[] memory v = nayms.getSupportedExternalTokens(); assertEq(v.length, orig.length + 1); @@ -120,10 +120,9 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { } function testAddSupportedExternalTokenIfWrapper() public { - bytes32 entityId1 = "0xe1"; changePrank(sm.addr); - nayms.createEntity(entityId1, account0Id, initEntity(wethId, 5_000, 30_000, true), "test"); - nayms.enableEntityTokenization(entityId1, "E1", "E1 Token"); + bytes32 entityId1 = createTestEntity(account0Id); + nayms.enableEntityTokenization(entityId1, "E1", "E1 Token", 1e6); nayms.startTokenSale(entityId1, 100 ether, 100 ether); vm.recordLogs(); @@ -138,7 +137,7 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { address loggedWrapperAddress = abi.decode(entries[0].data, (address)); vm.expectRevert("cannot add participation token wrapper as external"); - nayms.addSupportedExternalToken(loggedWrapperAddress); + nayms.addSupportedExternalToken(loggedWrapperAddress, 1e13); } function testOnlySystemAdminCanCallLockAndUnlockFunction(address userAddress) public { @@ -189,10 +188,8 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { function testLockFunctionExternalWithdrawFromEntity() public { bytes32 wethId = LibHelpers._getIdForAddress(wethAddress); - Entity memory entityInfo = initEntity(wethId, 5000, 10000, false); - bytes32 systemAdminEntityId = 0xe011000000000000000000000000000000000000000000000000000000000000; changePrank(sm.addr); - nayms.createEntity(systemAdminEntityId, systemAdminId, entityInfo, bytes32(0)); + bytes32 systemAdminEntityId = createTestEntity(systemAdminId); // deposit changePrank(systemAdmin); // given the entity admin role above @@ -202,7 +199,7 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.internalBalanceOf(systemAdminEntityId, wethId), 1 ether, "entity1 lost internal WETH"); assertEq(nayms.internalTokenSupply(wethId), 1 ether); - nayms.lockFunction(ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector); + nayms.lockFunction(IDiamondProxy.externalWithdrawFromEntity.selector); vm.expectRevert("function is locked"); nayms.externalWithdrawFromEntity(systemAdminEntityId, systemAdmin, address(weth), 0.5 ether); @@ -211,7 +208,7 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { vm.recordLogs(); - nayms.unlockFunction(ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector); + nayms.unlockFunction(IDiamondProxy.externalWithdrawFromEntity.selector); Vm.Log[] memory entries = vm.getRecordedLogs(); assertEq(entries[0].topics.length, 1); @@ -219,7 +216,7 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { (s_functionSelectors) = abi.decode(entries[0].data, (bytes4[])); bytes4[] memory functionSelectors = new bytes4[](1); - functionSelectors[0] = ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector; + functionSelectors[0] = IDiamondProxy.externalWithdrawFromEntity.selector; assertEq(s_functionSelectors[0], functionSelectors[0]); @@ -241,20 +238,20 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { (s_functionSelectors) = abi.decode(entries[0].data, (bytes4[])); bytes4[] memory lockedFunctions = new bytes4[](14); - lockedFunctions[0] = IEntityFacet.startTokenSale.selector; - lockedFunctions[1] = ISimplePolicyFacet.paySimpleClaim.selector; - lockedFunctions[2] = ISimplePolicyFacet.paySimplePremium.selector; - lockedFunctions[3] = ISimplePolicyFacet.checkAndUpdateSimplePolicyState.selector; - lockedFunctions[4] = IMarketFacet.cancelOffer.selector; - lockedFunctions[5] = IMarketFacet.executeLimitOffer.selector; - lockedFunctions[6] = ITokenizedVaultFacet.internalTransferFromEntity.selector; - lockedFunctions[7] = ITokenizedVaultFacet.payDividendFromEntity.selector; - lockedFunctions[8] = ITokenizedVaultFacet.internalBurn.selector; - lockedFunctions[9] = ITokenizedVaultFacet.wrapperInternalTransferFrom.selector; - lockedFunctions[10] = ITokenizedVaultFacet.withdrawDividend.selector; - lockedFunctions[11] = ITokenizedVaultFacet.withdrawAllDividends.selector; - lockedFunctions[12] = ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector; - lockedFunctions[13] = ITokenizedVaultIOFacet.externalDeposit.selector; + lockedFunctions[0] = IDiamondProxy.startTokenSale.selector; + lockedFunctions[1] = IDiamondProxy.paySimpleClaim.selector; + lockedFunctions[2] = IDiamondProxy.paySimplePremium.selector; + lockedFunctions[3] = IDiamondProxy.checkAndUpdateSimplePolicyState.selector; + lockedFunctions[4] = IDiamondProxy.cancelOffer.selector; + lockedFunctions[5] = IDiamondProxy.executeLimitOffer.selector; + lockedFunctions[6] = IDiamondProxy.internalTransferFromEntity.selector; + lockedFunctions[7] = IDiamondProxy.payDividendFromEntity.selector; + lockedFunctions[8] = IDiamondProxy.internalBurn.selector; + lockedFunctions[9] = IDiamondProxy.wrapperInternalTransferFrom.selector; + lockedFunctions[10] = IDiamondProxy.withdrawDividend.selector; + lockedFunctions[11] = IDiamondProxy.withdrawAllDividends.selector; + lockedFunctions[12] = IDiamondProxy.externalWithdrawFromEntity.selector; + lockedFunctions[13] = IDiamondProxy.externalDeposit.selector; for (uint256 i = 0; i < lockedFunctions.length; i++) { assertTrue(nayms.isFunctionLocked(lockedFunctions[i])); @@ -304,19 +301,19 @@ contract T02AdminTest is D03ProtocolDefaults, MockAccounts { nayms.unlockAllFundTransferFunctions(); - assertFalse(nayms.isFunctionLocked(IEntityFacet.startTokenSale.selector), "function startTokenSale locked"); - assertFalse(nayms.isFunctionLocked(ISimplePolicyFacet.paySimpleClaim.selector), "function paySimpleClaim locked"); - assertFalse(nayms.isFunctionLocked(ISimplePolicyFacet.paySimplePremium.selector), "function paySimplePremium locked"); - assertFalse(nayms.isFunctionLocked(ISimplePolicyFacet.checkAndUpdateSimplePolicyState.selector), "function checkAndUpdateSimplePolicyState locked"); - assertFalse(nayms.isFunctionLocked(IMarketFacet.cancelOffer.selector), "function cancelOffer locked"); - assertFalse(nayms.isFunctionLocked(IMarketFacet.executeLimitOffer.selector), "function executeLimitOffer locked"); - assertFalse(nayms.isFunctionLocked(ITokenizedVaultFacet.internalTransferFromEntity.selector), "function internalTransferFromEntity locked"); - assertFalse(nayms.isFunctionLocked(ITokenizedVaultFacet.payDividendFromEntity.selector), "function payDividendFromEntity locked"); - assertFalse(nayms.isFunctionLocked(ITokenizedVaultFacet.internalBurn.selector), "function internalBurn locked"); - assertFalse(nayms.isFunctionLocked(ITokenizedVaultFacet.wrapperInternalTransferFrom.selector), "function wrapperInternalTransferFrom locked"); - assertFalse(nayms.isFunctionLocked(ITokenizedVaultFacet.withdrawDividend.selector), "function withdrawDividend locked"); - assertFalse(nayms.isFunctionLocked(ITokenizedVaultFacet.withdrawAllDividends.selector), "function withdrawAllDividends locked"); - assertFalse(nayms.isFunctionLocked(ITokenizedVaultIOFacet.externalWithdrawFromEntity.selector), "function externalWithdrawFromEntity locked"); - assertFalse(nayms.isFunctionLocked(ITokenizedVaultIOFacet.externalDeposit.selector), "function externalDeposit locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.startTokenSale.selector), "function startTokenSale locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.paySimpleClaim.selector), "function paySimpleClaim locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.paySimplePremium.selector), "function paySimplePremium locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.checkAndUpdateSimplePolicyState.selector), "function checkAndUpdateSimplePolicyState locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.cancelOffer.selector), "function cancelOffer locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.executeLimitOffer.selector), "function executeLimitOffer locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.internalTransferFromEntity.selector), "function internalTransferFromEntity locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.payDividendFromEntity.selector), "function payDividendFromEntity locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.internalBurn.selector), "function internalBurn locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.wrapperInternalTransferFrom.selector), "function wrapperInternalTransferFrom locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.withdrawDividend.selector), "function withdrawDividend locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.withdrawAllDividends.selector), "function withdrawAllDividends locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.externalWithdrawFromEntity.selector), "function externalWithdrawFromEntity locked"); + assertFalse(nayms.isFunctionLocked(IDiamondProxy.externalDeposit.selector), "function externalDeposit locked"); } } diff --git a/test/T02User.t.sol b/test/T02User.t.sol index 6c850c5b..a5e387ff 100644 --- a/test/T02User.t.sol +++ b/test/T02User.t.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { D03ProtocolDefaults, LibHelpers, LC } from "./defaults/D03ProtocolDefaults.sol"; import { MockAccounts } from "test/utils/users/MockAccounts.sol"; import { Vm } from "forge-std/Vm.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import "../src/shared/CustomErrors.sol"; contract T02UserTest is D03ProtocolDefaults, MockAccounts { function setUp() public {} diff --git a/test/T03NaymsOwnership.t.sol b/test/T03NaymsOwnership.t.sol index 0d05fe75..dfed695d 100644 --- a/test/T03NaymsOwnership.t.sol +++ b/test/T03NaymsOwnership.t.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { D03ProtocolDefaults, LibHelpers, LC } from "./defaults/D03ProtocolDefaults.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import "src/shared/CustomErrors.sol"; import { MockAccounts } from "./utils/users/MockAccounts.sol"; @@ -11,7 +11,7 @@ contract T03NaymsOwnershipTest is D03ProtocolDefaults, MockAccounts { function setUp() public {} - function testTransferOwernshipFailsIfNotSysAdmin() public { + function testTransferOwnershipFailsIfNotSysAdmin() public { changePrank(signer2); vm.expectRevert(abi.encodeWithSelector(InvalidGroupPrivilege.selector, signer2Id, systemContext, "", LC.GROUP_SYSTEM_ADMINS)); nayms.transferOwnership(signer1); @@ -45,11 +45,7 @@ contract T03NaymsOwnershipTest is D03ProtocolDefaults, MockAccounts { assertFalse(nayms.isInGroup(signer2Id, systemContext, LC.GROUP_SYSTEM_ADMINS)); } - function testFuzz_TransferOwnership( - address newOwner, - address notSysAdmin, - address anotherSysAdmin - ) public { + function testFuzz_TransferOwnership(address newOwner, address notSysAdmin, address anotherSysAdmin) public { vm.assume(newOwner != anotherSysAdmin && newOwner != account0); vm.assume(anotherSysAdmin != address(0)); diff --git a/test/T03SystemFacet.t.sol b/test/T03SystemFacet.t.sol index d9459a92..b8392f7c 100644 --- a/test/T03SystemFacet.t.sol +++ b/test/T03SystemFacet.t.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { D03ProtocolDefaults, LibHelpers, LC } from "./defaults/D03ProtocolDefaults.sol"; +import { D03ProtocolDefaults, LibHelpers, LC, c } from "./defaults/D03ProtocolDefaults.sol"; import { MockAccounts } from "./utils/users/MockAccounts.sol"; -import { Entity } from "src/diamonds/nayms/AppStorage.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import { Entity } from "../src/shared/AppStorage.sol"; +import "../src/shared/CustomErrors.sol"; contract T03SystemFacetTest is D03ProtocolDefaults, MockAccounts { using LibHelpers for *; @@ -47,11 +47,13 @@ contract T03SystemFacetTest is D03ProtocolDefaults, MockAccounts { function testSingleCreateEntity() public { bytes32 objectId1 = "0x1"; + vm.expectRevert(abi.encodeWithSelector(InvalidObjectType.selector, objectId1, LC.OBJECT_TYPE_ENTITY)); nayms.createEntity(objectId1, objectContext1, initEntity(wethId, 5000, LC.BP_FACTOR, true), "entity test hash"); + nayms.createEntity(makeId(LC.OBJECT_TYPE_ENTITY, bytes20(objectId1)), objectContext1, initEntity(wethId, 5000, LC.BP_FACTOR, true), "entity test hash"); } function testMultipleCreateEntity() public { - bytes32 objectId1 = "0x1"; + bytes32 objectId1 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0x1")); nayms.createEntity(objectId1, objectContext1, initEntity(wethId, 5000, LC.BP_FACTOR, true), "entity test hash"); // cannot create an object that already exists in a given context @@ -62,7 +64,7 @@ contract T03SystemFacetTest is D03ProtocolDefaults, MockAccounts { vm.expectRevert(abi.encodePacked(CreatingEntityThatAlreadyExists.selector, (objectId1))); nayms.createEntity(objectId1, objectContext1, initEntity(wethId, 5000, LC.BP_FACTOR, true), "entity test hash"); - bytes32 objectId2 = "0x2"; + bytes32 objectId2 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0x2")); nayms.createEntity(objectId2, objectContext1, initEntity(wethId, 5000, LC.BP_FACTOR, true), "entity test hash"); } @@ -72,22 +74,43 @@ contract T03SystemFacetTest is D03ProtocolDefaults, MockAccounts { } function testIsObject() public { - bytes32 objectId2 = "0x2"; + bytes32 objectId2 = "0xe1"; assertFalse(nayms.isObject(objectId2)); - nayms.createEntity(objectId2, objectContext1, initEntity(wethId, 5000, LC.BP_FACTOR, true), "entity test hash"); + objectId2 = createTestEntity(objectContext1); + // nayms.createEntity(objectId2, objectContext1, initEntity(wethId, 5000, LC.BP_FACTOR, true), "entity test hash"); assertTrue(nayms.isObject(objectId2)); } function testGetObjectMeta() public { - bytes32 objectId2 = "0x2"; + bytes32 objectId2 = createTestEntity(objectContext1); - nayms.createEntity(objectId2, objectContext1, initEntity(wethId, 5000, LC.BP_FACTOR, true), "entity test hash"); (bytes32 parent, bytes32 dataHash, string memory tokenSymbol, string memory tokenName, address wrapperAddress) = nayms.getObjectMeta(objectId2); - assertEq(dataHash, "entity test hash"); + assertEq(dataHash, ""); assertEq(parent, ""); assertEq(tokenSymbol, ""); assertEq(tokenName, ""); assertEq(wrapperAddress, address(0)); } + + bytes12[9] internal objectTypes = [ + LC.OBJECT_TYPE_ADDRESS, + LC.OBJECT_TYPE_ENTITY, + LC.OBJECT_TYPE_POLICY, + LC.OBJECT_TYPE_FEE, + LC.OBJECT_TYPE_CLAIM, + LC.OBJECT_TYPE_DIVIDEND, + LC.OBJECT_TYPE_PREMIUM, + LC.OBJECT_TYPE_ROLE, + LC.OBJECT_TYPE_GROUP + ]; + + function test_IsObjectType() public { + for (uint256 i; i < objectTypes.length; i++) { + bytes32 objectId = bytes32(objectTypes[i]) | bytes32(uint256(1)); + assertEq(nayms.getObjectType(objectId), objectTypes[i], "getObjectType"); + c.logBytes12(nayms.getObjectType(objectId)); + assertEq(nayms.isObjectType(objectId, objectTypes[i]), true, "isObjectType"); + } + } } diff --git a/test/T03TokenizedVault.t.sol b/test/T03TokenizedVault.t.sol index 06ea57a3..a5c534d5 100644 --- a/test/T03TokenizedVault.t.sol +++ b/test/T03TokenizedVault.t.sol @@ -1,12 +1,12 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { MockAccounts } from "./utils/users/MockAccounts.sol"; import { c, D03ProtocolDefaults, LibHelpers, LC } from "./defaults/D03ProtocolDefaults.sol"; -import { Entity, CalculatedFees } from "src/diamonds/nayms/AppStorage.sol"; -import { IDiamondCut } from "src/diamonds/nayms/INayms.sol"; +import { Entity, CalculatedFees } from "../src/shared/AppStorage.sol"; +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; import { TokenizedVaultFixture } from "test/fixtures/TokenizedVaultFixture.sol"; -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import "src/shared/CustomErrors.sol"; // solhint-disable max-states-count // solhint-disable no-console @@ -17,9 +17,9 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { bytes32 internal nWBTC; bytes32 internal dividendBankId; - bytes32 internal entity1 = bytes32("e5"); - bytes32 internal entity2 = bytes32("e6"); - bytes32 internal entity3 = bytes32("e7"); + bytes32 internal entity1 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("e5")); + bytes32 internal entity2 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("e6")); + bytes32 internal entity3 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("e7")); uint256 internal constant collateralRatio_500 = 500; uint256 internal constant maxCapital_3000eth = 3_000 ether; @@ -54,7 +54,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { nWBTC = LibHelpers._getIdForAddress(wbtcAddress); dividendBankId = LibHelpers._stringToBytes32(LC.DIVIDEND_BANK_IDENTIFIER); - nayms.addSupportedExternalToken(wbtcAddress); + nayms.addSupportedExternalToken(wbtcAddress, 1); entityWbtc = Entity({ assetId: LibHelpers._getIdForAddress(wbtcAddress), collateralRatio: LC.BP_FACTOR, @@ -63,9 +63,9 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { simplePolicyEnabled: true }); changePrank(sm.addr); - nayms.createEntity(bytes32("0x11111"), davidId, entityWbtc, "entity wbtc test hash"); - nayms.createEntity(bytes32("0x22222"), emilyId, entityWbtc, "entity wbtc test hash"); - nayms.createEntity(bytes32("0x33333"), faithId, entityWbtc, "entity wbtc test hash"); + nayms.createEntity(makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0x11111")), davidId, entityWbtc, "entity wbtc test hash"); + nayms.createEntity(makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0x22222")), emilyId, entityWbtc, "entity wbtc test hash"); + nayms.createEntity(makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0x33333")), faithId, entityWbtc, "entity wbtc test hash"); alice = account0; aliceId = account0Id; @@ -87,30 +87,11 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { scheduleAndUpgradeDiamond(cut); } - function externalDepositDirect( - bytes32 to, - address token, - uint256 amount - ) internal { + function externalDepositDirect(bytes32 to, address token, uint256 amount) internal { (bool success, ) = address(nayms).call(abi.encodeWithSelector(tokenizedVaultFixture.externalDepositDirect.selector, to, token, amount)); require(success, "Should get commissions from app storage"); } - function testEntityTokenSymbolUniqueness() public { - changePrank(sm.addr); - bytes32 entityId = createTestEntity(account0Id); - bytes32 entityId2 = createTestEntityWithId(account0Id, "0xe2"); - bytes32 entityId3 = createTestEntityWithId(account0Id, "0xe3"); - - nayms.enableEntityTokenization(entityId, "Entity1", "Entity1 Token"); - - vm.expectRevert("token symbol already in use"); - nayms.enableEntityTokenization(entityId2, "Entity1", "Entity2 Token"); - - vm.expectRevert("token symbol already in use"); - nayms.enableEntityTokenization(entityId3, "WBTC", "Entity3 Token"); - } - function testGetLockedBalance() public { changePrank(sm.addr); bytes32 entityId = createTestEntity(account0Id); @@ -119,7 +100,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.getLockedBalance(entityId, entityId), 0); // now start token sale to create an offer - nayms.enableEntityTokenization(entityId, "Entity1", "Entity1 Token"); + nayms.enableEntityTokenization(entityId, "Entity1", "Entity1 Token", 1); nayms.startTokenSale(entityId, 100, 100); assertEq(nayms.getLockedBalance(entityId, entityId), 100); @@ -167,17 +148,15 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { } // note: when creating entities for another userId, e.g. Alice is creating an entity for Bob, Alice needs to make sure they create the internal Nayms Id of Bob correctly. - function testFuzzSingleExternalDeposit( - bytes32 _entity1, - bytes32 _entity2, - address _signer1, - address _signer2, - uint256 _depositAmount - ) public { + function testFuzzSingleExternalDeposit(bytes20 _entity1Partial, bytes20 _entity2Partial, address _signer1, address _signer2, uint256 _depositAmount) public { + bytes32 _entity1 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20(_entity1Partial)); + bytes32 _entity2 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20(_entity2Partial)); vm.assume(_entity1 > 0 && _entity2 > 0 && _entity1 != _entity2); // else revert: object already exists vm.assume(!nayms.isObject(_entity1) && !nayms.isObject(_entity2)); vm.assume(_depositAmount > 5); // else revert: _internalMint: mint zero tokens, note: > 5 to ensure the externalDepositAmount isn't 0, see code below + // _entity1 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20(_entity1)); + // _entity2 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20(_entity2)); vm.assume(_signer1 != address(0) && _signer1 != address(999999)); vm.assume(_signer2 != address(0) && _signer2 != address(999999)); vm.assume(_signer1 != _signer2); @@ -270,7 +249,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { function testOnlyRolesInGroupPayDividendFromEntityCanPayDividend() public { bytes32 acc0EntityId = nayms.getEntity(account0Id); changePrank(sm.addr); - nayms.enableEntityTokenization(acc0EntityId, "E1", "E1"); + nayms.enableEntityTokenization(acc0EntityId, "E1", "E1", 1e6); nayms.startTokenSale(acc0EntityId, 1 ether, 1 ether); bytes32 acc9Id = LibHelpers._getIdForAddress(account9); @@ -304,7 +283,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // check token supply of participation token (entity token) assertEq(nayms.internalTokenSupply(acc0EntityId), 0, "Testing when the participation token supply is 0, but par token supply is NOT 0"); - bytes32 randomGuid = bytes32("0x1"); + bytes32 randomGuid = makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")); address nonAdminAddress = vm.addr(0xACC9); bytes32 nonAdminId = LibHelpers._getIdForAddress(nonAdminAddress); @@ -349,12 +328,12 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { changePrank(sm.addr); // note: starting a token sale which mints participation tokens - nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice"); + nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice", 1e6); nayms.startTokenSale(acc0EntityId, 1e18, 1e18); // check token supply of participation token (entity token) assertEq(nayms.internalTokenSupply(acc0EntityId), 1 ether, ""); - bytes32 randomGuid = bytes32("0x1"); + bytes32 randomGuid = makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")); changePrank(em.addr); nayms.assignRole(acc0EntityId, acc0EntityId, LC.ROLE_ENTITY_COMPTROLLER_COMBINED); @@ -435,7 +414,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // note: starting a token sale which mints participation tokens changePrank(sm.addr); - nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice"); + nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice", 1e6); nayms.startTokenSale(eAlice, 1e18, 1e18); // check token supply of participation token (entity token) @@ -451,7 +430,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { nayms.assignRole(eAlice, eAlice, LC.ROLE_ENTITY_COMPTROLLER_COMBINED); changePrank(alice); - bytes32 randomGuid = bytes32("0x1"); + bytes32 randomGuid = makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")); nayms.payDividendFromEntity(randomGuid, 1 ether); // eAlice is paying out a dividend assertEq(nayms.internalBalanceOf(eAlice, nWETH), 1 ether - 1 ether, "eAlice's nWETH balance should DECREASE (transfer to dividend bank)"); @@ -516,7 +495,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // note: starting a token sale which mints participation tokens changePrank(sm.addr); - nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice"); + nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice", 1); nayms.startTokenSale(eAlice, 20_000, 20_000); // check token supply of participation token (entity token) @@ -538,14 +517,14 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.getWithdrawableDividend(eCharlie, eAlice, nWETH), 0); changePrank(alice); - nayms.payDividendFromEntity(bytes32("0x1"), 40_000); // eAlice is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")), 40_000); // eAlice is paying out a dividend assertEq(nayms.internalBalanceOf(eAlice, nWETH), 60_000); assertEq(nayms.internalBalanceOf(dividendBankId, nWETH), 40_000); assertEq(nayms.getWithdrawableDividend(eBob, eAlice, nWETH), 6_000); assertEq(nayms.getWithdrawableDividend(eCharlie, eAlice, nWETH), 34_000); - nayms.payDividendFromEntity(bytes32("0x2"), 60_000); // eAlice is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x2")), 60_000); // eAlice is paying out a dividend assertEq(nayms.internalBalanceOf(eAlice, nWETH), 0); assertEq(nayms.internalBalanceOf(dividendBankId, nWETH), 100_000); @@ -600,7 +579,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // note: starting a token sale which mints participation tokens changePrank(sm.addr); - nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice"); + nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice", 1e6); nayms.startTokenSale(eAlice, eAliceParTokenSaleAmount, eAliceParTokenPrice); // check token supply of participation token (entity token) @@ -635,7 +614,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { uint256 balanceOfEbob = nayms.internalBalanceOf(eBob, eAlice); changePrank(alice); - bytes32 randomGuid = bytes32("0x1"); + bytes32 randomGuid = makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")); nayms.payDividendFromEntity(randomGuid, dividendAmount); // eAlice is paying out a dividend uint256 calc = (balanceOfEbob * dividendAmount) / eAliceParTokenSaleAmount; @@ -704,8 +683,8 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { changePrank(sm.addr); // note: starting a token sale which mints participation tokens - nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice"); - nayms.enableEntityTokenization(eDavid, "eDavid", "eDavid"); + nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice", 1); + nayms.enableEntityTokenization(eDavid, "eDavid", "eDavid", 1); nayms.startTokenSale(eAlice, 20_000, 20_000); nayms.startTokenSale(eDavid, 20_000, 20_000); @@ -740,14 +719,14 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.getWithdrawableDividend(eCharlie, eAlice, nWETH), 0); vm.startPrank(alice); - nayms.payDividendFromEntity(bytes32("0x1"), 40_000); // eAlice is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")), 40_000); // eAlice is paying out a dividend assertEq(nayms.internalBalanceOf(eAlice, nWETH), 60_000); assertEq(nayms.internalBalanceOf(dividendBankId, nWETH), 40_000); assertEq(nayms.getWithdrawableDividend(eBob, eAlice, nWETH), 6_000); assertEq(nayms.getWithdrawableDividend(eCharlie, eAlice, nWETH), 34_000); - nayms.payDividendFromEntity(bytes32("0x2"), 60_000); // eAlice is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x2")), 60_000); // eAlice is paying out a dividend assertEq(nayms.internalBalanceOf(eAlice, nWETH), 0); assertEq(nayms.internalBalanceOf(dividendBankId, nWETH), 100_000); @@ -761,7 +740,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.internalBalanceOf(eDavid, nWBTC), 100_000); vm.prank(david); - nayms.payDividendFromEntity(bytes32("0x3"), 40_000); // eDavid is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x3")), 40_000); // eDavid is paying out a dividend assertEq(nayms.internalBalanceOf(eDavid, nWBTC), 60_000); assertEq(nayms.internalBalanceOf(dividendBankId, nWBTC), 40_000); @@ -769,7 +748,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.getWithdrawableDividend(eFaith, eDavid, nWBTC), 34_000); vm.prank(david); - nayms.payDividendFromEntity(bytes32("0x4"), 60_000); // eDavid is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x4")), 60_000); // eDavid is paying out a dividend assertEq(nayms.internalBalanceOf(eDavid, nWBTC), 0); assertEq(nayms.internalBalanceOf(dividendBankId, nWBTC), 100_000); @@ -823,7 +802,8 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // note: starting a token sale which mints participation tokens changePrank(sm.addr); - nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice"); + // nayms.setMinimumSell(nWETH, 1); + nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice", 1); nayms.startTokenSale(eAlice, 20_000, 20_000); changePrank(sa.addr); nayms.assignRole(em.id, systemContext, LC.ROLE_ENTITY_MANAGER); @@ -835,6 +815,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.internalBalanceOf(eAlice, eAlice), 20_000, "eAlice's eAlice balance should INCREASE (mint)"); changePrank(sm.addr); + nayms.assignRole(eBob, eBob, LC.ROLE_ENTITY_CP); nayms.assignRole(eCharlie, eCharlie, LC.ROLE_ENTITY_CP); @@ -853,7 +834,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.getWithdrawableDividend(eCharlie, eAlice, nWETH), 0); changePrank(alice); - nayms.payDividendFromEntity(bytes32("0x1"), 40_000); // eAlice is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")), 40_000); // eAlice is paying out a dividend assertEq(nayms.internalBalanceOf(eAlice, nWETH), 60_000); assertEq(nayms.internalBalanceOf(dividendBankId, nWETH), 40_000); @@ -861,9 +842,9 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.getWithdrawableDividend(eCharlie, eAlice, nWETH), 34_000); vm.expectRevert("nonunique dividend distribution identifier"); - nayms.payDividendFromEntity(bytes32("0x1"), 60_000); // eAlice is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")), 60_000); // eAlice is paying out a dividend - nayms.payDividendFromEntity(bytes32("0x2"), 60_000); // eAlice is paying out a dividend + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x2")), 60_000); // eAlice is paying out a dividend assertEq(nayms.internalBalanceOf(eAlice, nWETH), 0); assertEq(nayms.internalBalanceOf(dividendBankId, nWETH), 100_000); @@ -886,19 +867,11 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { scopeTo(_input, 1_000, type(uint128).max); } - function scopeTo( - uint256 _input, - uint256 _min, - uint256 _max - ) internal pure { + function scopeTo(uint256 _input, uint256 _min, uint256 _max) internal pure { vm.assume(_min <= _input && _input <= _max); } - function testFuzzWithdrawableDividends( - uint256 _parTokenSupply, - uint256 _holdersShare, - uint256 _dividendAmount - ) public { + function testFuzzWithdrawableDividends(uint256 _parTokenSupply, uint256 _holdersShare, uint256 _dividendAmount) public { // -- Test Case ----------------------------- // 1. start token sale // 2. distribute dividends @@ -923,8 +896,8 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { }); changePrank(sm.addr); - bytes32 entity0Id = bytes32("0xe1"); - bytes32 entity1Id = bytes32("0xe2"); + bytes32 entity0Id = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0xe1")); + bytes32 entity1Id = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0xe2")); nayms.createEntity(entity0Id, account0Id, e, "test"); nayms.createEntity(entity1Id, signer1Id, e, "test"); @@ -936,7 +909,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { changePrank(sm.addr); // 1. ---- start token sale ---- - nayms.enableEntityTokenization(entity0Id, "e0token", "e0token"); + nayms.enableEntityTokenization(entity0Id, "e0token", "e0token", 1); nayms.startTokenSale(entity0Id, _parTokenSupply, _parTokenSupply); assertEq(nayms.internalTokenSupply(entity0Id), _parTokenSupply, "Entity 1 participation tokens should be minted"); @@ -951,7 +924,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.internalBalanceOf(entity0Id, nWETH), _dividendAmount, "entity0 nWETH balance should INCREASE (mint)"); // distribute dividends to entity0 shareholders - bytes32 guid = bytes32("0xc0ffee"); + bytes32 guid = makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0xc0ffe")); nayms.payDividendFromEntity(guid, _dividendAmount); // entity1 has no share, thus no withdrawable dividend at this point @@ -991,7 +964,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // 5. ---- distribute another round of dividends ---- vm.startPrank(account0); c.log(nayms.internalBalanceOf(entity0Id, nWETH)); - bytes32 guid2 = bytes32("0xbEEf"); + bytes32 guid2 = makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0xbEEf")); nayms.payDividendFromEntity(guid2, _dividendAmount); // 6. ---- SHOULD have more withdrawable dividends now! ---- @@ -1029,14 +1002,14 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // STAGE 1: Alice is starting an eAlice token sale. changePrank(sm.addr); - nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice"); + nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice", 1); uint256 tokenAmount = 1e18; nayms.startTokenSale(eAlice, tokenAmount, tokenAmount); changePrank(alice); nayms.externalDeposit(wethAddress, 1 ether); assertEq(nayms.internalBalanceOf(eAlice, nWETH), 1 ether, "eAlice's nWETH balance should INCREASE"); // eAlice is paying out a dividend with guid 0x1 - nayms.payDividendFromEntity("0x1", 1 ether); + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")), 1 ether); // STAGE 2: Bob is trying to buy all of the newly sold eAlice Tokens. changePrank(bob); @@ -1054,6 +1027,9 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { changePrank(alice); writeTokenBalance(alice, naymsAddress, wethAddress, depositAmount); nayms.externalDeposit(wethAddress, 1 ether + totalFees_); + + nayms.objectMinimumSell(nWETH); + nayms.objectMinimumSell(eAlice); nayms.executeLimitOffer(nWETH, 1 ether, eAlice, tokenAmount); // STAGE 4: Alice selling the newly purchased eAlice token back to Bob. @@ -1065,7 +1041,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // STAGE 5: Alice wants to pay a dividend to the eAlice token holders. changePrank(alice); - nayms.payDividendFromEntity("0x2", 1 ether); // eAlice is paying out a dividend with new guid "0x2" + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x2")), 1 ether); // eAlice is paying out a dividend with new guid "0x2" // Note that up to this point, Bob has not received any dividend because the initial dividend is already all taken by Alice. // STAGE 6: Bob tries to get this new dividend since he now has all the eAlice @@ -1084,7 +1060,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { eAlice = nayms.getEntity(account0Id); eBob = nayms.getEntity(signer1Id); changePrank(sm.addr); - nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice"); + nayms.enableEntityTokenization(eAlice, "eAlice", "eAlice", 1e6); nayms.assignRole(eBob, eBob, LC.ROLE_ENTITY_CP); changePrank(sa.addr); nayms.assignRole(em.id, systemContext, LC.ROLE_ENTITY_MANAGER); @@ -1108,10 +1084,10 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // 4. Alice pays 100 WETH as a dividend; changePrank(alice); - nayms.payDividendFromEntity("0x1", 100 ether); + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x1")), 100 ether); // 5. Alice pays 100 WETH as a dividend; - nayms.payDividendFromEntity("0x2", 100 ether); + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x2")), 100 ether); // 6. Bob buys all 100 ALICE from Alice. Here, during the transfer, // Alice would have withdrawn the 200 WETH dividend owed to her, @@ -1134,7 +1110,7 @@ contract T03TokenizedVaultTest is D03ProtocolDefaults, MockAccounts { // 8. Alice pays 500 WETH as a dividend; changePrank(alice); - nayms.payDividendFromEntity("0x3", eAliceStartAmount); + nayms.payDividendFromEntity(makeId(LC.OBJECT_TYPE_DIVIDEND, bytes20("0x3")), eAliceStartAmount); // 9. Alice tries to withdraw the 500 WETH dividend, should withdraw all 500 WETH nayms.withdrawDividend(eAlice, eAlice, nWETH); diff --git a/test/T04Entity.t.sol b/test/T04Entity.t.sol index f844528d..f8cd53b3 100644 --- a/test/T04Entity.t.sol +++ b/test/T04Entity.t.sol @@ -1,23 +1,27 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { Vm } from "forge-std/Vm.sol"; import { c, D03ProtocolDefaults, LibHelpers, LC } from "./defaults/D03ProtocolDefaults.sol"; -import { Entity, MarketInfo, SimplePolicy, SimplePolicyInfo, Stakeholders } from "src/diamonds/nayms/interfaces/FreeStructs.sol"; -import { IDiamondCut } from "src/diamonds/nayms/INayms.sol"; +import { Entity, MarketInfo, SimplePolicy, SimplePolicyInfo, Stakeholders } from "src/shared/FreeStructs.sol"; +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; +import { StdStyle } from "forge-std/StdStyle.sol"; import { SimplePolicyFixture } from "test/fixtures/SimplePolicyFixture.sol"; // solhint-disable no-global-import -import "src/diamonds/nayms/interfaces/CustomErrors.sol"; +import "../src/shared/CustomErrors.sol"; + +import { StdStyle } from "forge-std/StdStyle.sol"; // solhint-disable no-console contract T04EntityTest is D03ProtocolDefaults { using LibHelpers for *; + using StdStyle for *; - bytes32 internal entityId1 = 0xe10d947335abff84f4d0ebc75f32f3a549614348ab29e220c4b20b0acbd1fa38; - bytes32 internal policyId1 = 0x1ea6c707069e49cdc3a4ad357dbe9f52e3a3679636e37698a9ca254b9cb33869; + bytes32 internal entityId1 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20(bytes32(0xe10d947335abff84f4d0ebc75f32f3a549614348ab29e220c4b20b0acbd1fa38))); + bytes32 internal policyId1 = makeId(LC.OBJECT_TYPE_POLICY, bytes20(bytes32(0x1ea6c707069e49cdc3a4ad357dbe9f52e3a3679636e37698a9ca254b9cb33869))); bytes32 public testPolicyDataHash = 0x00a420601de63bf726c0be38414e9255d301d74ad0d820d633f3ab75effd6f5b; bytes32 public policyHashedTypedData; @@ -77,6 +81,15 @@ contract T04EntityTest is D03ProtocolDefaults { changePrank(su.addr); } + function testObjectTokenSymbol() public { + bytes32 objectId = createTestEntity(account0Id); + string memory symbol = "ptEN1"; + string memory name = "Entity1 PToken"; + + nayms.enableEntityTokenization(objectId, symbol, name, 1e6); + assertEq(nayms.getObjectTokenSymbol(objectId), symbol); + } + function testDomainSeparator() public { bytes32 domainSeparator = nayms.domainSeparatorV4(); // bytes32 expected = bytes32(0x38c40ddfc309275c926499b83dd3de3a9c824318ef5204fd7ae58f823f845291); @@ -120,34 +133,57 @@ contract T04EntityTest is D03ProtocolDefaults { assertTrue(hashTypedDataV4 == signingHash); } + function testEntityTokenSymbolAndNameValidation() public { + changePrank(sm.addr); + bytes32 entityId = createTestEntity(account0Id); + bytes32 entityId2 = createTestEntityWithId(account0Id, makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0xe2"))); + bytes32 entityId3 = createTestEntityWithId(account0Id, makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0xe3"))); + + string memory symbol = "ptEN1"; + string memory name = "Entity1 PToken"; + vm.expectRevert(abi.encodeWithSelector(ObjectTokenSymbolInvalid.selector, entityId, "")); + nayms.enableEntityTokenization(entityId, "", name, 1e6); + + vm.expectRevert(abi.encodeWithSelector(ObjectTokenSymbolInvalid.selector, entityId, "12345678901234567")); + nayms.enableEntityTokenization(entityId, "12345678901234567", name, 1e6); + + vm.expectRevert(abi.encodeWithSelector(ObjectTokenNameInvalid.selector, entityId, "Entity1 Token Entity1 Token Entity1 Token Entity1 Token Entity1 To")); + nayms.enableEntityTokenization(entityId, symbol, "Entity1 Token Entity1 Token Entity1 Token Entity1 Token Entity1 To", 1e6); + + vm.expectRevert(abi.encodeWithSelector(ObjectTokenNameInvalid.selector, entityId, "")); + nayms.enableEntityTokenization(entityId, symbol, "", 1e6); + + nayms.enableEntityTokenization(entityId, symbol, name, 1e6); + + vm.expectRevert(abi.encodeWithSelector(ObjectTokenSymbolAlreadyInUse.selector, entityId2, symbol)); + nayms.enableEntityTokenization(entityId2, symbol, "Entity2 PToken", 1e6); + + vm.expectRevert(abi.encodeWithSelector(ObjectTokenSymbolAlreadyInUse.selector, entityId3, "WETH")); + nayms.enableEntityTokenization(entityId3, "WETH", "Entity3 Token", 1e6); + } + function testEnableEntityTokenization() public { nayms.createEntity(entityId1, account0Id, initEntity(wethId, 5000, 10000, false), "entity test hash"); // Attempt to tokenize an entity when the entity does not exist. Should throw an error. bytes32 nonExistentEntity = bytes32("ffffaaa"); vm.expectRevert(abi.encodePacked(EntityDoesNotExist.selector, (nonExistentEntity))); - nayms.enableEntityTokenization(nonExistentEntity, "123456789012345", "1234567890123456"); - - vm.expectRevert("symbol must be less than 16 characters"); - nayms.enableEntityTokenization(entityId1, "1234567890123456", "1234567890123456"); + nayms.enableEntityTokenization(nonExistentEntity, "123456789012345", "1234567890123456", 1e6); changePrank(signer1); vm.expectRevert(abi.encodeWithSelector(InvalidGroupPrivilege.selector, signer1Id, systemContext, "", LC.GROUP_SYSTEM_MANAGERS)); - nayms.enableEntityTokenization(entityId1, "123456789012345", "1234567890123456"); + nayms.enableEntityTokenization(entityId1, "123456789012345", "1234567890123456", 1e6); changePrank(sm.addr); - vm.expectRevert("name must not be empty"); - nayms.enableEntityTokenization(entityId1, "123456789012345", ""); - - nayms.enableEntityTokenization(entityId1, "123456789012345", "1234567890123456"); + nayms.enableEntityTokenization(entityId1, "123456789012345", "1234567890123456", 1e6); vm.expectRevert("object already tokenized"); - nayms.enableEntityTokenization(entityId1, "123456789012345", "1234567890123456"); + nayms.enableEntityTokenization(entityId1, "123456789012346", "12345678901234567", 1e6); } function testUpdateEntityTokenInfo() public { nayms.createEntity(entityId1, account0Id, initEntity(wethId, 5000, 10000, false), "entity test hash"); - nayms.enableEntityTokenization(entityId1, "TT", "Test Token"); + nayms.enableEntityTokenization(entityId1, "TT", "Test Token", 1e6); string memory newTokenSymbol = "nTT"; string memory newTokenName = "New Test Token"; @@ -178,7 +214,7 @@ contract T04EntityTest is D03ProtocolDefaults { c.log(" >>> CREATED"); changePrank(systemAdmin); - nayms.addSupportedExternalToken(address(wbtc)); + nayms.addSupportedExternalToken(address(wbtc), 1); changePrank(sm.addr); vm.expectRevert("assetId change not allowed"); nayms.updateEntity(entityId1, initEntity(wbtcId, 10_000, 0, false)); @@ -290,8 +326,8 @@ contract T04EntityTest is D03ProtocolDefaults { simplePolicyEnabled: true }); - bytes32 eAlice = "ealice"; - bytes32 eBob = "ebob"; + bytes32 eAlice = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("ealice")); + bytes32 eBob = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("ebob")); nayms.createEntity(eAlice, aliceId, entity, "entity test hash"); nayms.createEntity(eBob, bobId, entity, "entity test hash"); @@ -338,9 +374,9 @@ contract T04EntityTest is D03ProtocolDefaults { simplePolicyEnabled: true }); - bytes32 eAlice = "eAlice"; - bytes32 eBob = "eBob"; - bytes32 eEve = "eEve"; + bytes32 eAlice = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("eAlice")); + bytes32 eBob = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("eBob")); + bytes32 eEve = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("eEve")); nayms.createEntity(eAlice, aliceId, entity, "entity test hash"); nayms.createEntity(eBob, bobId, entity, "entity test hash"); nayms.createEntity(eEve, eveId, entity, "entity test hash"); @@ -375,14 +411,17 @@ contract T04EntityTest is D03ProtocolDefaults { function testCreateSimplePolicyValidation() public { nayms.createEntity(entityId1, account0Id, initEntity(wethId, LC.BP_FACTOR, LC.BP_FACTOR, false), "entity test hash"); - changePrank(su.addr); - // enable simple policy creation + vm.startPrank(su.addr); vm.expectRevert("simple policy creation disabled"); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); - changePrank(sm.addr); + vm.stopPrank(); + + // enable simple policy creation + vm.startPrank(sm.addr); nayms.updateEntity(entityId1, initEntity(wethId, LC.BP_FACTOR, LC.BP_FACTOR, true)); - changePrank(su.addr); + vm.stopPrank(); + vm.startPrank(su.addr); // stakeholders entity ids array different length to signatures array bytes[] memory sig = stakeholders.signatures; stakeholders.signatures = new bytes[](0); @@ -407,43 +446,44 @@ contract T04EntityTest is D03ProtocolDefaults { vm.expectRevert("external token is not supported"); simplePolicy.asset = LibHelpers._getIdForAddress(wbtcAddress); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); + vm.stopPrank(); - changePrank(sa.addr); - nayms.addSupportedExternalToken(wbtcAddress); + vm.startPrank(sa.addr); + nayms.addSupportedExternalToken(wbtcAddress, 1e13); simplePolicy.asset = wbtcId; - changePrank(su.addr); + vm.startPrank(su.addr); vm.expectRevert("asset not matching with entity"); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); simplePolicy.asset = wethId; // test caller is not system underwriter - changePrank(account9); + vm.startPrank(account9); vm.expectRevert(abi.encodeWithSelector(InvalidGroupPrivilege.selector, account9._getIdForAddress(), systemContext, "", LC.GROUP_SYSTEM_UNDERWRITERS)); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); - changePrank(su.addr); + vm.startPrank(su.addr); // test capacity vm.expectRevert("not enough available capacity"); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); - changePrank(sm.addr); + vm.startPrank(sm.addr); // update max capacity nayms.updateEntity(entityId1, initEntity(wethId, 5000, 300000, true)); - changePrank(su.addr); + vm.startPrank(su.addr); // test collateral ratio constraint vm.expectRevert("not enough capital"); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); - changePrank(sm.addr); + vm.startPrank(sm.addr); // fund the policy sponsor entity nayms.updateEntity(entityId1, initEntity(wethId, 5000, 300000, true)); - changePrank(account0); + vm.startPrank(account0); writeTokenBalance(account0, naymsAddress, wethAddress, 100000); assertEq(weth.balanceOf(account0), 100000); nayms.externalDeposit(wethAddress, 100000); assertEq(nayms.internalBalanceOf(entityId1, wethId), 100000); - changePrank(su.addr); + vm.startPrank(su.addr); // start date too early uint256 blockTimestampBeforeWarp; @@ -476,19 +516,19 @@ contract T04EntityTest is D03ProtocolDefaults { bytes32[] memory r; uint16[] memory bp; - changePrank(systemAdmin); + vm.startPrank(systemAdmin); nayms.addFeeSchedule(LC.DEFAULT_FEE_SCHEDULE, LC.FEE_TYPE_PREMIUM, r, bp); - changePrank(su.addr); + vm.startPrank(su.addr); vm.expectRevert("must have fee schedule receivers"); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); // add back fee receiver r = b32Array1(NAYMS_LTD_IDENTIFIER); bp = u16Array1(300); - changePrank(systemAdmin); + vm.startPrank(systemAdmin); nayms.addFeeSchedule(LC.DEFAULT_FEE_SCHEDULE, LC.FEE_TYPE_PREMIUM, r, bp); - changePrank(su.addr); + vm.startPrank(su.addr); vm.expectRevert("number of commissions don't match"); bytes32[] memory commissionReceiversOrig = simplePolicy.commissionReceivers; simplePolicy.commissionReceivers = new bytes32[](0); @@ -536,6 +576,8 @@ contract T04EntityTest is D03ProtocolDefaults { assertEq(simplePolicyInfo.claimsPaid, simplePolicy.claimsPaid, "Claims paid amounts should match"); assertEq(simplePolicyInfo.premiumsPaid, simplePolicy.premiumsPaid, "Premiums paid amounts should match"); + nayms.cancelSimplePolicy(policyId1); + bytes32[] memory roles = new bytes32[](2); roles[0] = LibHelpers._stringToBytes32(LC.ROLE_UNDERWRITER); roles[1] = LibHelpers._stringToBytes32(LC.ROLE_BROKER); @@ -561,7 +603,7 @@ contract T04EntityTest is D03ProtocolDefaults { Entity memory e = nayms.getEntityInfo(entityId1); assertEq(e.utilizedCapacity, (10_000 * e.collateralRatio) / LC.BP_FACTOR, "utilized capacity"); - bytes32 policyId2 = "0xC0FFEF"; + bytes32 policyId2 = makeId(LC.OBJECT_TYPE_POLICY, bytes20("0xC0FFEF")); (Stakeholders memory stakeholders2, SimplePolicy memory policy2) = initPolicy(testPolicyDataHash); nayms.createSimplePolicy(policyId2, entityId1, stakeholders2, policy2, testPolicyDataHash); @@ -595,7 +637,7 @@ contract T04EntityTest is D03ProtocolDefaults { changePrank(sm.addr); // change parent - nayms.setEntity(signerId, bytes32("e0")); + nayms.setEntity(signerId, entityId1); changePrank(su.addr); // try creating vm.expectRevert(); @@ -672,7 +714,7 @@ contract T04EntityTest is D03ProtocolDefaults { changePrank(account0); // note: entity with 100% CR should be able to pay the claim - claim amount comes from the locked balance (locked in the policy) - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 2); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 2); assertEq(nayms.internalBalanceOf(entityId1, simplePolicy.asset), 21000 - 2, "entity balance of nWETH should DECREASE by pay claim amount"); assertEq(nayms.getEntityInfo(entityId1).utilizedCapacity, 21000 - 2, "entity utilization should DECREASE when a claim is made"); assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 21000 - 2, "entity locked balance should DECREASE"); @@ -689,7 +731,7 @@ contract T04EntityTest is D03ProtocolDefaults { assertEq(nayms.internalBalanceOf(entityId1, simplePolicy.asset), 20998 + 200_000, "after deposit, entity balance of nWETH should INCREASE"); changePrank(su.addr); - bytes32 policyId2 = LibHelpers._stringToBytes32("policyId2"); + bytes32 policyId2 = makeId(LC.OBJECT_TYPE_POLICY, bytes20("policyId2")); (stakeholders, simplePolicy) = initPolicyWithLimit(testPolicyDataHash, 200_001); vm.expectRevert("not enough capital"); @@ -701,9 +743,9 @@ contract T04EntityTest is D03ProtocolDefaults { assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 21000 - 2 + 200_000, "locked balance should INCREASE"); changePrank(account0); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId2"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId2")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId3"), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId3")), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); changePrank(su.addr); nayms.cancelSimplePolicy(policyId1); @@ -719,12 +761,16 @@ contract T04EntityTest is D03ProtocolDefaults { function testSimplePolicyEntityCapitalUtilization50CR() public { getReadyToCreatePolicies(); - changePrank(sa.addr); + vm.stopPrank(); + vm.startPrank(sa.addr); nayms.assignRole(em.id, systemContext, LC.ROLE_ENTITY_MANAGER); - changePrank(em.addr); + vm.stopPrank(); + + vm.startPrank(em.addr); nayms.assignRole(nayms.getEntity(account0Id), nayms.getEntity(account0Id), LC.ROLE_ENTITY_COMPTROLLER_COMBINED); + vm.stopPrank(); - changePrank(su.addr); + vm.startPrank(su.addr); (stakeholders, simplePolicy) = initPolicyWithLimit(testPolicyDataHash, 42002); vm.expectRevert("not enough capital"); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); @@ -733,21 +779,20 @@ contract T04EntityTest is D03ProtocolDefaults { (stakeholders, simplePolicy) = initPolicyWithLimit(testPolicyDataHash, 42000); nayms.createSimplePolicy(policyId1, entityId1, stakeholders, simplePolicy, testPolicyDataHash); assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 21000, "locked balance should INCREASE"); + vm.stopPrank(); - changePrank(account0); vm.expectRevert("_internalTransfer: insufficient balance available, funds locked"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 2); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 2); writeTokenBalance(account0, naymsAddress, wethAddress, 1); nayms.externalDeposit(wethAddress, 1); assertEq(nayms.internalBalanceOf(entityId1, simplePolicy.asset), 21001, "entity balance of nWETH should INCREASE by deposit amount"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 2); // claiming 2 + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 2); // claiming 2 assertEq(nayms.internalBalanceOf(entityId1, simplePolicy.asset), 20999, "entity balance of nWETH should DECREASE by pay claim amount"); assertEq(nayms.getEntityInfo(entityId1).utilizedCapacity, 21000 - 1, "entity utilization should DECREASE when a claim is made"); assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 21000 - 1, "entity locked balance should DECREASE"); - changePrank(account0); writeTokenBalance(account0, naymsAddress, wethAddress, 200_000); nayms.externalDeposit(wethAddress, 200_000); assertEq(nayms.internalBalanceOf(entityId1, simplePolicy.asset), 20999 + 200_000, "after deposit, entity balance of nWETH should INCREASE"); @@ -755,12 +800,13 @@ contract T04EntityTest is D03ProtocolDefaults { // increase max cap from 30_000 to 221_000 Entity memory newEInfo = nayms.getEntityInfo(entityId1); newEInfo.maxCapacity = 221_000; - changePrank(sm.addr); + vm.startPrank(sm.addr); nayms.updateEntity(entityId1, newEInfo); + vm.stopPrank(); - bytes32 policyId2 = LibHelpers._stringToBytes32("policyId2"); + bytes32 policyId2 = makeId(LC.OBJECT_TYPE_POLICY, bytes20("policyId2")); - changePrank(su.addr); + vm.startPrank(su.addr); (stakeholders, simplePolicy) = initPolicyWithLimit(testPolicyDataHash, 400_003); vm.expectRevert("not enough capital"); nayms.createSimplePolicy(policyId2, entityId1, stakeholders, simplePolicy, testPolicyDataHash); @@ -769,36 +815,34 @@ contract T04EntityTest is D03ProtocolDefaults { // note: brings us to 100% max capacity nayms.createSimplePolicy(policyId2, entityId1, stakeholders, simplePolicy, testPolicyDataHash); assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 21000 - 1 + 200_000, "locked balance should INCREASE"); + vm.stopPrank(); - changePrank(account0); vm.expectRevert("_internalTransfer: insufficient balance available, funds locked"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId2"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId2")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); vm.expectRevert("_internalTransfer: insufficient balance available, funds locked"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId2"), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId2")), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); - changePrank(su.addr); + vm.startPrank(su.addr); nayms.cancelSimplePolicy(policyId1); + vm.stopPrank(); assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 21000 - 1 + 200_000 - 20999, "after cancelling policy, the locked balance should DECREASE"); - changePrank(account0); vm.expectRevert("_internalBurn: insufficient balance available, funds locked"); nayms.externalWithdrawFromEntity(entityId1, account0, wethAddress, 21_000); - nayms.externalWithdrawFromEntity(entityId1, account0, wethAddress, 21_000 - 1); vm.expectRevert("_internalTransfer: insufficient balance available, funds locked"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId2"), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 1); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId2")), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 1); - changePrank(account0); writeTokenBalance(account0, naymsAddress, wethAddress, 1); nayms.externalDeposit(wethAddress, 1); vm.expectRevert("_internalTransfer: insufficient balance available, funds locked"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId2"), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId2")), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 3); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId2"), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 1); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId2")), policyId2, DEFAULT_INSURED_PARTY_ENTITY_ID, 1); } function testSimplePolicyLockedBalancesAfterPaySimpleClaim() public { @@ -820,26 +864,26 @@ contract T04EntityTest is D03ProtocolDefaults { changePrank(account0); vm.expectRevert("_internalTransfer: insufficient balance available, funds locked"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 21000); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 21000); changePrank(account0); writeTokenBalance(account0, naymsAddress, wethAddress, 20000); nayms.externalDeposit(wethAddress, 20000); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 21000); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 21000); assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 10500, "locked balance should DECREASE by half"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId1"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 1000); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId1")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 1000); assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 10000, "locked balance should DECREASE"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId2"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 1000); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId2")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 1000); assertEq(nayms.getLockedBalance(entityId1, simplePolicy.asset), 9500, "locked balance should DECREASE"); nayms.internalBalanceOf(entityId1, simplePolicy.asset); // note: entity now has balance of 18000, locked balance of 9500 // attempting to pay a claim that's above the entity's balance, below the policy limit triggers the following error vm.expectRevert("_internalTransfer: insufficient balance"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId3"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 19000); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId3")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 19000); } function testSimplePolicyPremiumsCommissionsClaims() public { @@ -904,34 +948,34 @@ contract T04EntityTest is D03ProtocolDefaults { simplePolicy.cancelled = true; updateSimplePolicy(policyId1, simplePolicy); vm.expectRevert("Policy is cancelled"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 1000); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 1000); simplePolicy.fundsLocked = true; simplePolicy.cancelled = false; updateSimplePolicy(policyId1, simplePolicy); changePrank(account9); vm.expectRevert(); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 10000); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 10000); vm.expectRevert(); // does not have comptroller combined | comptroller cliam role - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, 0, 10000); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, 0, 10000); changePrank(account0); vm.expectRevert("invalid claim amount"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 0); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 0); changePrank(account0); vm.expectRevert("exceeds policy limit"); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 100001); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, 100001); uint256 claimAmount = 10000; uint256 balanceBeforeClaim = nayms.internalBalanceOf(DEFAULT_INSURED_PARTY_ENTITY_ID, simplePolicy.asset); simplePolicy = getSimplePolicy(policyId1); assertEq(simplePolicy.claimsPaid, 0); - nayms.paySimpleClaim(LibHelpers._stringToBytes32("claimId"), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, claimAmount); + nayms.paySimpleClaim(makeId(LC.OBJECT_TYPE_CLAIM, bytes20("claimId")), policyId1, DEFAULT_INSURED_PARTY_ENTITY_ID, claimAmount); simplePolicy = getSimplePolicy(policyId1); assertEq(simplePolicy.claimsPaid, 10000); @@ -949,7 +993,7 @@ contract T04EntityTest is D03ProtocolDefaults { vm.expectRevert(abi.encodeWithSelector(ObjectCannotBeTokenized.selector, entityId1)); nayms.startTokenSale(entityId1, sellAmount, sellAtPrice); - nayms.enableEntityTokenization(entityId1, "e1token", "e1token"); + nayms.enableEntityTokenization(entityId1, "e1token", "e1token", 1e2); changePrank(account9); vm.expectRevert(); @@ -1038,4 +1082,81 @@ contract T04EntityTest is D03ProtocolDefaults { vm.expectRevert("utilized capacity starts at 0"); nayms.createEntity(entityId1, account0Id, e, "entity test hash"); } + + function testSimplePolicyDoubleUnlockFunds() public { + getReadyToCreatePolicies(); + + vm.stopPrank(); + vm.startPrank(sa.addr); + nayms.assignRole(em.id, systemContext, LC.ROLE_ENTITY_MANAGER); + vm.stopPrank(); + + vm.startPrank(em.addr); + nayms.assignRole(entityId1, entityId1, LC.ROLE_ENTITY_COMPTROLLER_COMBINED); // 0"); @@ -389,7 +391,7 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { nayms.createEntity(entity2, signer2Id, initEntity(wethId, collateralRatio_500, salePrice, true), "test"); // init test funds to maxint - nayms.enableEntityTokenization(entity1, "e1token", "e1token"); + nayms.enableEntityTokenization(entity1, "e1token", "e1token", 1); changePrank(signer1); writeTokenBalance(signer1, naymsAddress, wethAddress, ~uint256(0)); @@ -531,10 +533,10 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { nayms.externalDeposit(wethAddress, 1_000 ether); vm.expectRevert("sell amount exceeds uint128 limit"); - nayms.executeLimitOffer(wethId, 2**128 + 1000, entity1, dt.entity1MintAndSaleAmt); + nayms.executeLimitOffer(wethId, 2 ** 128 + 1000, entity1, dt.entity1MintAndSaleAmt); vm.expectRevert("buy amount exceeds uint128 limit"); - nayms.executeLimitOffer(wethId, dt.entity1MintAndSaleAmt, entity1, 2**128 + 1000); + nayms.executeLimitOffer(wethId, dt.entity1MintAndSaleAmt, entity1, 2 ** 128 + 1000); vm.expectRevert("sell amount must be >0"); nayms.executeLimitOffer(wethId, 0, entity1, dt.entity1MintAndSaleAmt); @@ -563,7 +565,7 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { nayms.cancelOffer(lastOfferId); changePrank(sm.addr); - nayms.enableEntityTokenization(entity2, "e2token", "e2token"); + nayms.enableEntityTokenization(entity2, "e2token", "e2token", 1e6); nayms.startTokenSale(entity2, dt.entity2MintAndSaleAmt, dt.entity2SalePrice); changePrank(signer3); @@ -580,7 +582,7 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { nayms.assignRole(signer2Id, systemContext, LC.ROLE_ENTITY_CP); nayms.createEntity(entity1, signer1Id, initEntity(wethId, collateralRatio_500, maxCapital_2000eth, true), "test"); - nayms.enableEntityTokenization(entity1, "e1token", "e1token"); + nayms.enableEntityTokenization(entity1, "e1token", "e1token", 1e6); // start nENTITY1 token sale nayms.startTokenSale(entity1, dt.entity1MintAndSaleAmt, dt.entity1SalePrice); @@ -673,14 +675,7 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.getBestOfferId(wethId, entity1), 0, "invalid best offer ID"); } - function assertOfferFilled( - uint256 offerId, - bytes32 creator, - bytes32 sellToken, - uint256 initSellAmount, - bytes32 buyToken, - uint256 initBuyAmount - ) private { + function assertOfferFilled(uint256 offerId, bytes32 creator, bytes32 sellToken, uint256 initSellAmount, bytes32 buyToken, uint256 initBuyAmount) private { MarketInfo memory offer = nayms.getOffer(offerId); assertEq(offer.creator, creator, "offer creator invalid"); assertEq(offer.sellToken, sellToken, "invalid sell token"); @@ -734,7 +729,7 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { nayms.assignRole(signer2Id, systemContext, LC.ROLE_ENTITY_CP); nayms.createEntity(entity1, signer1Id, initEntity(wethId, collateralRatio_500, maxCapital_2000eth, true), "test"); - nayms.enableEntityTokenization(entity1, "e1token", "e1token"); + nayms.enableEntityTokenization(entity1, "e1token", "e1token", 1); nayms.startTokenSale(entity1, offer1sell, offer1buy); @@ -780,7 +775,7 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { nayms.assignRole(signer1Id, systemContext, LC.ROLE_ENTITY_CP); nayms.assignRole(signer2Id, systemContext, LC.ROLE_ENTITY_CP); - nayms.enableEntityTokenization(e1Id, "e1token", "e1token"); + nayms.enableEntityTokenization(e1Id, "e1token", "e1token", 1e6); nayms.startTokenSale(e1Id, saleAmount, salePrice); vm.stopPrank(); @@ -792,7 +787,7 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { assertEq(nayms.getLockedBalance(e1Id, wethId), 0, "locked balance should be 0"); - bytes32 policyId1 = "policy1"; + bytes32 policyId1 = makeId(LC.OBJECT_TYPE_POLICY, bytes20("simple_policy1")); uint256 policyLimit = 85 ether; vm.startPrank(su.addr); @@ -806,4 +801,193 @@ contract T04MarketTest is D03ProtocolDefaults, MockAccounts { changePrank(signer1); nayms.executeLimitOffer(e1Id, salePrice, wethId, saleAmount); } + + function testMessUpOrderSorting_IM24299() public { + assertEq(nayms.getBestOfferId(usdcId, entity1), 0, "invalid best offer, when no offer exists"); + + vm.startPrank(sm.addr); + nayms.createEntity(entity1, signer1Id, initEntity(usdcId, collateralRatio_500, maxCapital_2000eth, true), "entity test hash"); + vm.stopPrank(); + + // mint usdc for account0 + vm.startPrank(account0); + writeTokenBalance(account0, naymsAddress, usdcAddress, dt.entity1StartingBal); + nayms.externalDeposit(usdcAddress, dt.entity1ExternalDepositAmt); + vm.stopPrank(); + + // deposit into nayms vaults + // note: the entity creator can deposit funds into an entity + vm.startPrank(signer1); + writeTokenBalance(signer1, naymsAddress, usdcAddress, dt.entity1StartingBal); + nayms.externalDeposit(usdcAddress, dt.entity1ExternalDepositAmt); + vm.stopPrank(); + + vm.startPrank(sm.addr); + nayms.enableEntityTokenization(entity1, "E1", "Entity1", 1); + nayms.startTokenSale(entity1, 550, 550); + + // init entities + nayms.createEntity(entity2, signer2Id, initEntity(usdcId, collateralRatio_500, maxCapital_2000eth, true), "entity test hash"); + nayms.createEntity(entity3, signer3Id, initEntity(usdcId, collateralRatio_500, maxCapital_2000eth, true), "entity test hash"); + nayms.createEntity(entity4, signer4Id, initEntity(usdcId, collateralRatio_500, maxCapital_2000eth, true), "entity test hash"); + vm.stopPrank(); + + // fund taker entity + vm.startPrank(signer2); // honest user + writeTokenBalance(signer2, naymsAddress, usdcAddress, 1 ether); + nayms.externalDeposit(usdcAddress, 1 ether); + vm.stopPrank(); + + vm.startPrank(signer3); // attacker + writeTokenBalance(signer3, naymsAddress, usdcAddress, 1 ether); + nayms.externalDeposit(usdcAddress, 1 ether); + vm.stopPrank(); + + vm.startPrank(signer4); // another entity of attacker + writeTokenBalance(signer4, naymsAddress, usdcAddress, 1 ether); + nayms.externalDeposit(usdcAddress, 1 ether); + vm.stopPrank(); + + // unassign entity admin role + vm.startPrank(sa.addr); + hUnassignRole(signer2Id, entity2); + hUnassignRole(signer3Id, entity3); + hUnassignRole(signer4Id, entity4); + vm.stopPrank(); + + // assign entity cp role + vm.startPrank(sm.addr); + hAssignRole(signer2Id, entity2, LC.ROLE_ENTITY_CP); + hAssignRole(signer3Id, entity3, LC.ROLE_ENTITY_CP); + hAssignRole(signer4Id, entity4, LC.ROLE_ENTITY_CP); + vm.stopPrank(); + + // signer 2 & 3 take all the ptokens + vm.startPrank(signer2); + nayms.executeLimitOffer(usdcId, 200, entity1, 200); // it will be the best offer + vm.stopPrank(); + + vm.startPrank(signer3); + nayms.executeLimitOffer(usdcId, 350, entity1, 350); // it will be the best offer + vm.stopPrank(); + + vm.startPrank(signer2); //honest user's offer (sellAmount1, buyAmount1) = (200, 101) + nayms.executeLimitOffer(entity1, 200, usdcId, 101); // it will be the best offer + vm.stopPrank(); + + vm.startPrank(signer3); //attacker adds a better offer (sellAmount2, buyAmount2) = (200, 100) + nayms.executeLimitOffer(entity1, 200, usdcId, 100); // it will be the best offer now + vm.stopPrank(); + + // this one causes rounding isseue and is incorrectly added to the order book + vm.startPrank(signer4); + nayms.executeLimitOffer(usdcId, 100, entity1, 199); + vm.stopPrank(); + + vm.startPrank(signer3); + nayms.executeLimitOffer(entity1, 150, usdcId, 100); + vm.stopPrank(); + + uint256 bestId = nayms.getBestOfferId(entity1, usdcId); + uint256 prev1 = nayms.getOffer(bestId).rankPrev; + uint256 prev2 = nayms.getOffer(prev1).rankPrev; + + MarketInfo memory o1 = nayms.getOffer(bestId); + MarketInfo memory o2 = nayms.getOffer(prev1); + MarketInfo memory o3 = nayms.getOffer(prev2); + + uint256 price1 = (o1.buyAmountInitial * 1000) / o1.sellAmountInitial; + uint256 price2 = (o2.buyAmountInitial * 1000) / o2.sellAmountInitial; + uint256 price3 = (o3.buyAmountInitial * 1000) / o3.sellAmountInitial; + + require(price1 < price2, string.concat("best order incorrect: ", vm.toString(price1))); + require(price2 < price3, string.concat("second best order incorrect: ", vm.toString(price2))); + } + + function testDoubleLockedBalance_IM24430() public { + /// when creating a policy, available balance is checked to be used for collateral, + /// previously no check was being performed, to see if any part of the balance is locked already + /// attack consists of placing an order to lock the available balance + /// and then creating a policy locking the same funds again + + uint256 usdc1000 = 1000e6; + uint256 pToken100 = 100e18; + // uint256 pToken99 = 99e18; + + // prettier-ignore + Entity memory entityData = Entity({ + assetId: usdcId, + collateralRatio: 5_000, + maxCapacity: 100_000 * 1e6, + utilizedCapacity: 0, + simplePolicyEnabled: true + }); + + NaymsAccount memory attacker = makeNaymsAcc("Attacker"); + NaymsAccount memory userA = makeNaymsAcc("entityA"); + + vm.startPrank(sm.addr); + + // createEntity for attacker + hCreateEntity(attacker.entityId, attacker.id, entityData, "test entity"); + + // Attacker deposits 1000 USDC + trading fee + fundEntityUsdc(attacker, usdc1000 + 1e7); + + vm.startPrank(sm.addr); + + // userA startTokenSale with (1000 pToken for 1000.000001 USDC) + hCreateEntity(userA.entityId, userA.id, entityData, "entity test hash"); + nayms.enableEntityTokenization(userA.entityId, "E1", "Entity 1 Token", 1e6); + nayms.startTokenSale(userA.entityId, pToken100, usdc1000 * 2); + + /// Attack script + /// place order and lock funds + vm.startPrank(attacker.addr); + nayms.executeLimitOffer(usdcId, usdc1000, userA.entityId, pToken100); + + vm.startPrank(su.addr); + /// create policy (double lock?) + uint256 policyLimitAmount = (usdc1000 * 10_000) / entityData.collateralRatio; + (Stakeholders memory stakeholders, SimplePolicy memory simplePolicy) = initPolicyWithLimitAndAsset("offChainHash", policyLimitAmount, usdcId); + + vm.expectRevert("not enough capital"); + nayms.createSimplePolicy(bytes32("1"), attacker.entityId, stakeholders, simplePolicy, "offChainHash"); + + // uint256 lockedBalance = nayms.getLockedBalance(attacker.entityId, usdcId); + // uint256 internalBalance = nayms.internalBalanceOf(attacker.entityId, usdcId); + // require(lockedBalance <= internalBalance, "double lock balance attack successful"); + } + + function testMinimumSellAmounts_IM24703() public { + vm.startPrank(sm.addr); + nayms.setMinimumSell(usdcId, 1e6); + assertEq(nayms.objectMinimumSell(usdcId), 1e6, "unexpected minimum sell amount"); + bytes32 e1Id = createTestEntity(ea.id); + ea.entityId = e1Id; + nayms.enableEntityTokenization(e1Id, "E1", "Entity 1", 1e12); + + hSetEntity(tcp, e1Id); + // Selling 10 pTokens for 1_000_000 USDC + nayms.startTokenSale(e1Id, 10e18, 1_000_000e6); + + hAssignRole(tcp.id, e1Id, LC.ROLE_ENTITY_CP); + + fundEntityUsdc(ea, 1_000_000e6); + // If the amount being sold is less than the minimum sell amount, the offer is expected to go into the + // "fulfilled" state + vm.startPrank(tcp.addr); + (uint256 lastOfferId, , ) = nayms.executeLimitOffer(usdcId, 1e6 - 1, e1Id, 10e18); + MarketInfo memory m = logOfferDetails(lastOfferId); + assertEq(m.state, LC.OFFER_STATE_FULFILLED, "unexpected offer state"); + (lastOfferId, , ) = nayms.executeLimitOffer(usdcId, 1e6, e1Id, 1e12 + 1); + m = logOfferDetails(lastOfferId); + assertEq(m.state, LC.OFFER_STATE_ACTIVE, "unexpected offer state"); + (lastOfferId, , ) = nayms.executeLimitOffer(usdcId, 1e6 + 1, e1Id, 1e12); + m = logOfferDetails(lastOfferId); + assertEq(m.state, LC.OFFER_STATE_ACTIVE, "unexpected offer state"); + (lastOfferId, , ) = nayms.executeLimitOffer(usdcId, 1e6, e1Id, 1e12 - 1); + m = logOfferDetails(lastOfferId); + assertEq(m.state, LC.OFFER_STATE_FULFILLED, "unexpected offer state"); + } } diff --git a/test/T05TokenWrapper.t.sol b/test/T05TokenWrapper.t.sol index d31ad16f..1ae338ea 100644 --- a/test/T05TokenWrapper.t.sol +++ b/test/T05TokenWrapper.t.sol @@ -1,15 +1,15 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { Vm } from "forge-std/Vm.sol"; import { D03ProtocolDefaults, c, LC } from "./defaults/D03ProtocolDefaults.sol"; -import { Entity } from "src/diamonds/nayms/interfaces/FreeStructs.sol"; -import { ERC20Wrapper } from "../src/erc20/ERC20Wrapper.sol"; +import { Entity } from "src/shared/FreeStructs.sol"; +import { ERC20Wrapper } from "../src/utils/ERC20Wrapper.sol"; contract T05TokenWrapper is D03ProtocolDefaults { - bytes32 internal entityId1 = "0xe1"; - bytes32 internal entityId2 = "0xe2"; + bytes32 internal entityId1 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0xe1")); + bytes32 internal entityId2 = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0xe2")); string internal testSymbol = "E1"; string internal testName = "Entity 1 Token"; @@ -38,7 +38,7 @@ contract T05TokenWrapper is D03ProtocolDefaults { nayms.wrapToken(entityId1); changePrank(sm.addr); - nayms.enableEntityTokenization(entityId1, testSymbol, testName); + nayms.enableEntityTokenization(entityId1, testSymbol, testName, 1e6); nayms.startTokenSale(entityId1, tokenAmount, tokenAmount); changePrank(sa.addr); diff --git a/test/TNaymsToken.t.sol b/test/TNaymsToken.t.sol index 3a6ccb7d..e4bc073c 100644 --- a/test/TNaymsToken.t.sol +++ b/test/TNaymsToken.t.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { Vm } from "forge-std/Vm.sol"; import { D03ProtocolDefaults, LibAdmin } from "./defaults/D03ProtocolDefaults.sol"; -import { INayms, IDiamondCut } from "src/diamonds/nayms/INayms.sol"; + +// import { INayms, IDiamondCut } from "src/diamonds/nayms/INayms.sol"; /// @notice Contains tests for Nayms ERC20 token diff --git a/test/UpdateFees.t.sol b/test/UpdateFees.t.sol index 8f24e820..4ec92ba8 100644 --- a/test/UpdateFees.t.sol +++ b/test/UpdateFees.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; // import "forge-std/Test.sol"; diff --git a/test/defaults/D00GlobalDefaults.sol b/test/defaults/D00GlobalDefaults.sol index ad7da512..ede77a51 100644 --- a/test/defaults/D00GlobalDefaults.sol +++ b/test/defaults/D00GlobalDefaults.sol @@ -1,13 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; // solhint-disable no-console // solhint-disable no-global-import -// import { StdStorage, stdStorage, c, Test } from "forge-std/Test.sol"; -import { console2 as c } from "forge-std/console2.sol"; + +import { console2 as c } from "forge-std/Test.sol"; import { CommonBase } from "forge-std/Base.sol"; import { StdStorage, stdStorage } from "forge-std/StdStorage.sol"; -import { IERC20 } from "src/erc20/IERC20.sol"; +import { StdAssertions } from "forge-std/StdAssertions.sol"; +import { IERC20 } from "src/interfaces/IERC20.sol"; /// @notice Default test setup part 00 /// Global level defaults for any and all solidity projects using solc >=0.7.6 @@ -17,10 +18,13 @@ import { IERC20 } from "src/erc20/IERC20.sol"; // For local tests, account0 will be the owner and the deployer. This will be the test contract address. // systemAdmin will be another account. owner and system admins must be mutually exclusive. -abstract contract D00GlobalDefaults is CommonBase { +abstract contract D00GlobalDefaults is CommonBase, StdAssertions { using stdStorage for StdStorage; - address public account0 = address(this); + address public immutable account0 = address(this); + + // address public account1; + // address public account2; constructor() payable { c.log("\n Test SETUP:"); @@ -30,18 +34,13 @@ abstract contract D00GlobalDefaults is CommonBase { c.log("msg.sender during setup", msg.sender); } - function writeTokenBalance( - address to, - address from, - address token, - uint256 amount - ) public { + function writeTokenBalance(address to, address from, address token, uint256 amount) public { IERC20 tkn = IERC20(token); tkn.approve(address(from), amount); stdstore.target(token).sig(IERC20(token).balanceOf.selector).with_key(to).checked_write(amount); - // assertEq(tkn.balanceOf(to), amount, "balance should INCREASE (after mint)"); + assertEq(tkn.balanceOf(to), amount, "balance should INCREASE (after mint)"); } function enforceHasContractCode(address _contract, string memory _errorMessage) public view { diff --git a/test/defaults/D01Deployment.sol b/test/defaults/D01Deployment.sol index a5ff1e36..8de320e5 100644 --- a/test/defaults/D01Deployment.sol +++ b/test/defaults/D01Deployment.sol @@ -1,28 +1,32 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; // solhint-disable no-console // solhint-disable no-global-import +import "forge-std/Test.sol"; import "./D00GlobalDefaults.sol"; -import { InitDiamond } from "src/diamonds/nayms/InitDiamond.sol"; -import { INayms, IDiamondCut } from "src/diamonds/nayms/INayms.sol"; -import { Nayms } from "src/diamonds/nayms/Nayms.sol"; -import { LibHelpers } from "src/diamonds/nayms/libs/LibHelpers.sol"; - -import { LibGeneratedNaymsFacetHelpers } from "script/utils/LibGeneratedNaymsFacetHelpers.sol"; -import { DeploymentHelpers } from "script/utils/DeploymentHelpers.sol"; -import { LibConstants as LC } from "src/diamonds/nayms/libs/LibConstants.sol"; +import { IDiamondCut } from "lib/diamond-2-hardhat/contracts/interfaces/IDiamondCut.sol"; +import { DiamondProxy } from "src/generated/DiamondProxy.sol"; +import { IDiamondProxy } from "src/generated/IDiamondProxy.sol"; +import { LibDiamondHelper } from "src/generated/LibDiamondHelper.sol"; +import { LibGovernance } from "src/libs/LibGovernance.sol"; +import { LibHelpers } from "src/libs/LibHelpers.sol"; +import { InitDiamond } from "src/init/InitDiamond.sol"; +import { StdStyle } from "forge-std/StdStyle.sol"; +import { LibConstants as LC } from "src/libs/LibConstants.sol"; /// @notice Default test setup part 01 /// Deploy and initialize Nayms platform -abstract contract D01Deployment is D00GlobalDefaults, DeploymentHelpers { +abstract contract D01Deployment is D00GlobalDefaults, Test { using LibHelpers for *; - InitDiamond public initDiamond; - Nayms public naymsContract; + using StdStyle for *; + address public naymsAddress; - INayms public nayms; + + IDiamondProxy public nayms; + InitDiamond public initDiamond; //// test constant variables //// bytes32 public immutable salt = keccak256(bytes("A salt!")); @@ -32,6 +36,14 @@ abstract contract D01Deployment is D00GlobalDefaults, DeploymentHelpers { address public systemAdmin; bytes32 public systemAdminId; + /// @dev Helper function to create object Ids with object type prefix. + function makeId(bytes12 _objecType, bytes20 randomBytes) internal pure returns (bytes32) { + if (_objecType != LC.OBJECT_TYPE_ADDRESS) { + randomBytes |= bytes20(0x0000000000000000000000000000000000000001); + } + return bytes32((_objecType)) | (bytes32(randomBytes) >> 96); + } + struct NaymsAccount { bytes32 id; bytes32 entityId; @@ -41,7 +53,7 @@ abstract contract D01Deployment is D00GlobalDefaults, DeploymentHelpers { function makeNaymsAcc(string memory name) public returns (NaymsAccount memory) { (address addr, uint256 privateKey) = makeAddrAndKey(name); - return NaymsAccount({ id: LibHelpers._getIdForAddress(addr), entityId: keccak256(bytes(name)), pk: privateKey, addr: addr }); + return NaymsAccount({ id: LibHelpers._getIdForAddress(addr), entityId: makeId(LC.OBJECT_TYPE_ENTITY, bytes20(keccak256(bytes(name)))), pk: privateKey, addr: addr }); } /// @dev Pass in a NaymsAccount to change the prank to NaymsAccount.addr @@ -49,10 +61,21 @@ abstract contract D01Deployment is D00GlobalDefaults, DeploymentHelpers { changePrank(na.addr); } + function getDiamondAddress() internal view returns (address diamondAddress) { + diamondAddress = vm.envAddress(string.concat("TESTS_FORK_DIAMOND_ADDRESS_", vm.toString(block.chainid))); + + c.log(string.concat("Diamond address from env ", "TESTS_FORK_DIAMOND_ADDRESS_", vm.toString(block.chainid)).yellow().bold(), diamondAddress); + } + constructor() payable { + c.log("\n -- D01 Deployment Defaults\n"); c.log("block.chainid", block.chainid); bool BOOL_FORK_TEST = vm.envOr({ name: "BOOL_FORK_TEST", defaultValue: false }); + c.log("Are tests being run on a fork?".yellow().bold(), BOOL_FORK_TEST); + bool TESTS_FORK_UPGRADE_DIAMOND = vm.envOr({ name: "TESTS_FORK_UPGRADE_DIAMOND", defaultValue: true }); + c.log("Are we testing diamond upgrades on a fork?".yellow().bold(), TESTS_FORK_UPGRADE_DIAMOND); + if (BOOL_FORK_TEST) { uint256 FORK_BLOCK = vm.envOr({ name: string.concat("FORK_BLOCK_", vm.toString(block.chainid)), defaultValue: type(uint256).max }); c.log("FORK_BLOCK", FORK_BLOCK); @@ -64,8 +87,8 @@ abstract contract D01Deployment is D00GlobalDefaults, DeploymentHelpers { vm.createSelectFork(getChain(block.chainid).rpcUrl, FORK_BLOCK); } - naymsAddress = getDiamondAddressFromFile(); - nayms = INayms(naymsAddress); + naymsAddress = getDiamondAddress(); + nayms = IDiamondProxy(naymsAddress); deployer = address(this); owner = nayms.owner(); @@ -74,11 +97,11 @@ abstract contract D01Deployment is D00GlobalDefaults, DeploymentHelpers { systemAdminId = LibHelpers._getIdForAddress(systemAdmin); vm.label(systemAdmin, "System Admin"); - string[] memory facetsToCutIn; - keyToReadDiamondAddress = string.concat(".", vm.toString(block.chainid)); - IDiamondCut.FacetCut[] memory cut = facetDeploymentAndCut(naymsAddress, FacetDeploymentAction.UpgradeFacetsWithChangesOnly, facetsToCutIn); vm.startPrank(owner); - scheduleAndUpgradeDiamond(cut); + if (TESTS_FORK_UPGRADE_DIAMOND) { + IDiamondCut.FacetCut[] memory cut = LibDiamondHelper.deployFacetsAndGetCuts(naymsAddress); + scheduleAndUpgradeDiamond(cut); + } } else { c.log("Local testing (no fork)"); @@ -86,84 +109,33 @@ abstract contract D01Deployment is D00GlobalDefaults, DeploymentHelpers { owner = address(this); vm.startPrank(deployer); - // deploy the init contract - initDiamond = new InitDiamond(); - c.log("InitDiamond address", address(initDiamond)); - vm.label(address(initDiamond), "InitDiamond"); - // deploy all facets - address[] memory naymsFacetAddresses = LibGeneratedNaymsFacetHelpers.deployNaymsFacets(); - vm.label(account0, "Account 0 (Test Contract address, deployer, owner)"); systemAdmin = makeAddr("System Admin 0"); systemAdminId = LibHelpers._getIdForAddress(systemAdmin); - naymsContract = new Nayms(owner, systemAdmin); - nayms = INayms(address(naymsContract)); - naymsAddress = address(nayms); - // initialize the diamond as well as cut in all facets - INayms.FacetCut[] memory cut = LibGeneratedNaymsFacetHelpers.createNaymsDiamondFunctionsCut(naymsFacetAddresses); - scheduleAndUpgradeDiamond(cut, address(initDiamond), abi.encodeCall(initDiamond.initialize, ())); - - // Remove system admin from system managers group - nayms.updateRoleGroup(LC.ROLE_SYSTEM_ADMIN, LC.GROUP_SYSTEM_MANAGERS, false); - - nayms.updateRoleGroup(LC.ROLE_SYSTEM_UNDERWRITER, LC.GROUP_SYSTEM_UNDERWRITERS, true); - - nayms.updateRoleGroup(LC.ROLE_SYSTEM_MANAGER, LC.GROUP_SYSTEM_MANAGERS, true); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_CP, LC.GROUP_SYSTEM_MANAGERS); - - nayms.updateRoleGroup(LC.ROLE_SYSTEM_MANAGER, LC.GROUP_MANAGERS, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_MANAGER, LC.GROUP_MANAGERS, true); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_BROKER, LC.GROUP_MANAGERS); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_INSURED, LC.GROUP_MANAGERS); - - nayms.updateRoleGroup(LC.ROLE_ENTITY_MANAGER, LC.GROUP_ENTITY_MANAGERS, true); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_ENTITY_MANAGERS); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_COMPTROLLER_WITHDRAW, LC.GROUP_ENTITY_MANAGERS); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_COMPTROLLER_CLAIM, LC.GROUP_ENTITY_MANAGERS); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_COMPTROLLER_DIVIDEND, LC.GROUP_ENTITY_MANAGERS); - - nayms.updateRoleAssigner(LC.ROLE_SYSTEM_MANAGER, LC.GROUP_SYSTEM_ADMINS); - nayms.updateRoleAssigner(LC.ROLE_SYSTEM_UNDERWRITER, LC.GROUP_SYSTEM_ADMINS); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_ADMIN, LC.GROUP_SYSTEM_ADMINS); - nayms.updateRoleAssigner(LC.ROLE_ENTITY_MANAGER, LC.GROUP_SYSTEM_ADMINS); + c.log("Deploy diamond"); + naymsAddress = address(new DiamondProxy(account0)); + vm.label(naymsAddress, "Nayms diamond"); + nayms = IDiamondProxy(naymsAddress); - // Setup roles which can call functions - nayms.updateRoleGroup(LC.ROLE_SYSTEM_MANAGER, LC.GROUP_START_TOKEN_SALE, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_MANAGER, LC.GROUP_START_TOKEN_SALE, true); - - nayms.updateRoleGroup(LC.ROLE_ENTITY_MANAGER, LC.GROUP_CANCEL_OFFER, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_CP, LC.GROUP_CANCEL_OFFER, true); - - nayms.updateRoleGroup(LC.ROLE_ENTITY_CP, LC.GROUP_EXECUTE_LIMIT_OFFER, true); - - nayms.updateRoleGroup(LC.ROLE_ENTITY_BROKER, LC.GROUP_PAY_SIMPLE_PREMIUM, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_INSURED, LC.GROUP_PAY_SIMPLE_PREMIUM, true); - - nayms.updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_PAY_SIMPLE_CLAIM, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_CLAIM, LC.GROUP_PAY_SIMPLE_CLAIM, true); + // deploy all facets + IDiamondCut.FacetCut[] memory cuts = LibDiamondHelper.deployFacetsAndGetCuts(address(nayms)); - nayms.updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_PAY_DIVIDEND_FROM_ENTITY, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_DIVIDEND, LC.GROUP_PAY_DIVIDEND_FROM_ENTITY, true); + initDiamond = new InitDiamond(); + vm.label(address(initDiamond), "InitDiamond"); + c.log("InitDiamond:", address(initDiamond)); - nayms.updateRoleGroup(LC.ROLE_ENTITY_ADMIN, LC.GROUP_EXTERNAL_DEPOSIT, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_EXTERNAL_DEPOSIT, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_WITHDRAW, LC.GROUP_EXTERNAL_DEPOSIT, true); + c.log("Cut and init"); + nayms.diamondCut(cuts, address(initDiamond), abi.encodeCall(InitDiamond.init, (systemAdmin))); - nayms.updateRoleGroup(LC.ROLE_ENTITY_ADMIN, LC.GROUP_EXTERNAL_WITHDRAW_FROM_ENTITY, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_COMBINED, LC.GROUP_EXTERNAL_WITHDRAW_FROM_ENTITY, true); - nayms.updateRoleGroup(LC.ROLE_ENTITY_COMPTROLLER_WITHDRAW, LC.GROUP_EXTERNAL_WITHDRAW_FROM_ENTITY, true); + c.log("Diamond setup complete."); } } - function scheduleAndUpgradeDiamond( - IDiamondCut.FacetCut[] memory _cut, - address _init, - bytes memory _calldata - ) internal { + function scheduleAndUpgradeDiamond(IDiamondCut.FacetCut[] memory _cut, address _init, bytes memory _calldata) internal { // 1. schedule upgrade // 2. upgrade - bytes32 upgradeHash = keccak256(abi.encode(_cut, _init, _calldata)); + bytes32 upgradeHash = LibGovernance._calculateUpgradeId(_cut, _init, _calldata); if (upgradeHash == 0xc597f3eb22d11c46f626cd856bd65e9127b04623d83e442686776a2e3b670bbf) { c.log("There are no facets to upgrade. This hash is the keccak256 hash of an empty IDiamondCut.FacetCut[]"); } else { diff --git a/test/defaults/D02TestSetup.sol b/test/defaults/D02TestSetup.sol index 8a3bf2f1..380cc4d2 100644 --- a/test/defaults/D02TestSetup.sol +++ b/test/defaults/D02TestSetup.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { D01Deployment, LibHelpers, c } from "./D01Deployment.sol"; import { MockERC20 } from "solmate/test/utils/mocks/MockERC20.sol"; @@ -16,6 +16,10 @@ abstract contract D02TestSetup is D01Deployment { address public wbtcAddress; bytes32 public wbtcId; + MockERC20 public usdc; + address public usdcAddress; + bytes32 public usdcId; + constructor() payable { changePrank(address(this)); weth = new MockERC20("Wrapped ETH", "WETH", 18); @@ -26,7 +30,12 @@ abstract contract D02TestSetup is D01Deployment { wbtcAddress = address(wbtc); wbtcId = LibHelpers._getIdForAddress(wbtcAddress); + usdc = new MockERC20("USD Coin", "USDC", 6); + usdcAddress = address(usdc); + usdcId = LibHelpers._getIdForAddress(usdcAddress); + vm.label(wethAddress, "WETH"); vm.label(wbtcAddress, "WBTC"); + vm.label(usdcAddress, "USDC"); } } diff --git a/test/defaults/D03ProtocolDefaults.sol b/test/defaults/D03ProtocolDefaults.sol index 83470a55..1087d1fc 100644 --- a/test/defaults/D03ProtocolDefaults.sol +++ b/test/defaults/D03ProtocolDefaults.sol @@ -1,21 +1,31 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { D02TestSetup, LibHelpers, c } from "./D02TestSetup.sol"; -import { Entity, SimplePolicy, Stakeholders, FeeSchedule } from "src/diamonds/nayms/interfaces/FreeStructs.sol"; +import { Entity, SimplePolicy, MarketInfo, Stakeholders, FeeSchedule } from "src/shared/FreeStructs.sol"; import { ECDSA } from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import { MessageHashUtils } from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; -import { LibAdmin } from "src/diamonds/nayms/libs/LibAdmin.sol"; -import { LibConstants as LC } from "src/diamonds/nayms/libs/LibConstants.sol"; +import { LibAdmin } from "src/libs/LibAdmin.sol"; +import { LibObject } from "src/libs/LibObject.sol"; +import { LibConstants as LC } from "src/libs/LibConstants.sol"; import { StdStyle } from "forge-std/StdStyle.sol"; +import { IERC20 } from "src/interfaces/IERC20.sol"; + // solhint-disable no-console // solhint-disable state-visibility -abstract contract T02AccessHelpers is D02TestSetup { +/// @notice Default test setup part 03 +/// Protocol / project level defaults +/// Setup internal token IDs, entities, +contract D03ProtocolDefaults is D02TestSetup { using LibHelpers for *; using StdStyle for *; + bytes32 public immutable account0Id; + bytes32 public naymsTokenId; + bytes32 public immutable systemContext = LibAdmin._getSystemId(); string[3] internal rolesThatCanAssignRoles = [LC.ROLE_SYSTEM_ADMIN, LC.ROLE_SYSTEM_MANAGER, LC.ROLE_ENTITY_MANAGER]; @@ -36,91 +46,11 @@ abstract contract T02AccessHelpers is D02TestSetup { LC.GROUP_EXTERNAL_WITHDRAW_FROM_ENTITY ]; - /// @dev Print roles - function hRoles(address id) public view { - hRoles(LibHelpers._getIdForAddress(id)); - } - - function hRoles(address id, bytes32 context) public view { - hRoles(LibHelpers._getIdForAddress(id), context); - } - - function hRoles(NaymsAccount memory id) public view { - hRoles(id.id); - } - - function hRoles(NaymsAccount memory id, bytes32 context) public view { - hRoles(id.id, context); - } - - function hRoles(bytes32 id, bytes32 context) public view { - bytes32 parent = hRoles(id); - c.log(string.concat("Parent role in given context ", hGetRoleInContext(parent, context).blue())); - c.log(string.concat("User role in given context ", hGetRoleInContext(id, parent).blue())); - } - - function hRoles(bytes32 id) public view returns (bytes32 parent) { - parent = nayms.getEntity(id); - c.log(string.concat("User ", vm.toString(id))); - c.log(id._getAddressFromId()); - c.log(string.concat("Parent ", vm.toString(parent))); - c.log(string.concat("Parent role in parent context ", hGetRoleInContext(parent, parent).blue())); - c.log(string.concat("User role in parent context ", hGetRoleInContext(id, parent).blue())); - c.log(string.concat("User role in system context ", hGetRoleInContext(id, systemContext).blue())); - c.log(string.concat("Parent role in system context (not checked by assertPrivilege)", hGetRoleInContext(parent, systemContext).blue())); - } - - function hAssignRole( - bytes32 _objectId, - bytes32 _contextId, - string memory _role - ) internal { - nayms.assignRole(_objectId, _contextId, _role); - roleToUsers[_role].push(_objectId); - roleToUsersAddr[_role].push(_objectId._getAddressFromId()); - if (objectToContext[_objectId] == systemContext) { - c.log("warning: object's context is currently systemContext"); - } else { - objectToContext[_objectId] = _contextId; - } - } - - function hCreateEntity( - bytes32 _entityId, - bytes32 _entityAdmin, - Entity memory _entityData, - bytes32 _dataHash - ) internal { - nayms.createEntity(_entityId, _entityAdmin, _entityData, _dataHash); - roleToUsers[LC.ROLE_ENTITY_ADMIN].push(_entityAdmin); - - if (objectToContext[_entityAdmin] == systemContext) { - c.log("warning: object's context is currently systemContext"); - } else { - objectToContext[_entityAdmin] = _entityId; - } - } - - /// @dev Return the role as a decoded string - function hGetRoleInContext(bytes32 objectId, bytes32 contextId) public view returns (string memory roleString) { - roleString = string(nayms.getRoleInContext(objectId, contextId)._bytes32ToBytes()); - } -} - -/// @notice Default test setup part 03 -/// Protocol / project level defaults -/// Setup internal token IDs, entities, -contract D03ProtocolDefaults is T02AccessHelpers { - using StdStyle for *; - - bytes32 public immutable account0Id = LibHelpers._getIdForAddress(account0); - bytes32 public naymsTokenId; - - bytes32 public constant DEFAULT_ACCOUNT0_ENTITY_ID = bytes32("e0"); - bytes32 public constant DEFAULT_UNDERWRITER_ENTITY_ID = bytes32("e1"); - bytes32 public constant DEFAULT_BROKER_ENTITY_ID = bytes32("e2"); - bytes32 public constant DEFAULT_CAPITAL_PROVIDER_ENTITY_ID = bytes32("e3"); - bytes32 public constant DEFAULT_INSURED_PARTY_ENTITY_ID = bytes32("e4"); + bytes32 public DEFAULT_ACCOUNT0_ENTITY_ID; + bytes32 public DEFAULT_UNDERWRITER_ENTITY_ID = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("E2")); + bytes32 public DEFAULT_BROKER_ENTITY_ID = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("E3")); + bytes32 public DEFAULT_CAPITAL_PROVIDER_ENTITY_ID = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("E4")); + bytes32 public DEFAULT_INSURED_PARTY_ENTITY_ID = makeId(LC.OBJECT_TYPE_ENTITY, bytes20("E5")); // deriving public keys from private keys address public immutable signer1 = vm.addr(0xACC2); @@ -174,6 +104,8 @@ contract D03ProtocolDefaults is T02AccessHelpers { constructor() payable { c.log("\n -- D03 Protocol Defaults\n"); c.log("Test contract address ID, aka account0Id:"); + + account0Id = LibHelpers._getIdForAddress(account0); c.logBytes32(account0Id); naymsTokenId = LibHelpers._getIdForAddress(naymsAddress); @@ -186,7 +118,9 @@ contract D03ProtocolDefaults is T02AccessHelpers { vm.label(signer4, "Account 4 (Insured Party Rep)"); changePrank(systemAdmin); - nayms.addSupportedExternalToken(wethAddress); + + if (!nayms.isSupportedExternalToken(wethId)) nayms.addSupportedExternalToken(wethAddress, 1); + try nayms.addSupportedExternalToken(usdcAddress, 1) {} catch {} entity = Entity({ assetId: LibHelpers._getIdForAddress(wethAddress), @@ -200,6 +134,8 @@ contract D03ProtocolDefaults is T02AccessHelpers { hAssignRole(sm.id, systemContext, LC.ROLE_SYSTEM_MANAGER); hAssignRole(su.id, systemContext, LC.ROLE_SYSTEM_UNDERWRITER); + DEFAULT_ACCOUNT0_ENTITY_ID = makeId(LC.OBJECT_TYPE_ENTITY, bytes20(account0)); + changePrank(sm.addr); nayms.createEntity(DEFAULT_ACCOUNT0_ENTITY_ID, account0Id, entity, "entity test hash"); nayms.createEntity(DEFAULT_UNDERWRITER_ENTITY_ID, signer1Id, entity, "entity test hash"); @@ -226,17 +162,138 @@ contract D03ProtocolDefaults is T02AccessHelpers { c.log("\n -- END TEST SETUP D03 Protocol Defaults --\n"); } + /// @dev Print roles + function hRoles(address id) public view { + hRoles(LibHelpers._getIdForAddress(id)); + } + + function hRoles(address id, bytes32 context) public view { + hRoles(LibHelpers._getIdForAddress(id), context); + } + + function hRoles(NaymsAccount memory id) public view { + hRoles(id.id); + } + + function hRoles(NaymsAccount memory id, bytes32 context) public view { + hRoles(id.id, context); + } + + function hRoles(bytes32 id, bytes32 context) public view { + bytes32 parent = hRoles(id); + c.log(string.concat("Parent role in given context ", hGetRoleInContext(parent, context).blue())); + c.log(string.concat("User role in given context ", hGetRoleInContext(id, parent).blue())); + } + + function hRoles(bytes32 id) public view returns (bytes32 parent) { + parent = nayms.getEntity(id); + c.log(string.concat("User ", vm.toString(id))); + c.log(id._getAddressFromId()); + c.log(string.concat("Parent ", vm.toString(parent))); + c.log(string.concat("Parent role in parent context ", hGetRoleInContext(parent, parent).blue())); + c.log(string.concat("User role in parent context ", hGetRoleInContext(id, parent).blue())); + c.log(string.concat("User role in system context ", hGetRoleInContext(id, systemContext).blue())); + c.log(string.concat("Parent role in system context (not checked by assertPrivilege)", hGetRoleInContext(parent, systemContext).blue())); + } + + function hAssignRole(bytes32 _objectId, bytes32 _contextId, string memory _role) internal { + nayms.assignRole(_objectId, _contextId, _role); + roleToUsers[_role].push(_objectId); + roleToUsersAddr[_role].push(_objectId._getAddressFromId()); + if (objectToContext[_objectId] == systemContext) { + c.log("warning: object's context is currently systemContext"); + } else { + objectToContext[_objectId] = _contextId; + } + } + + function hUnassignRole(bytes32 _objectId, bytes32 _contextId) internal { + nayms.unassignRole(_objectId, _contextId); + } + + function hCreateEntity(bytes32 _entityId, bytes32 _entityAdmin, Entity memory _entityData, bytes32 _dataHash) internal { + nayms.createEntity(_entityId, _entityAdmin, _entityData, _dataHash); + roleToUsers[LC.ROLE_ENTITY_ADMIN].push(_entityAdmin); + + if (objectToContext[_entityAdmin] == systemContext) { + c.log("warning: object's context is currently systemContext"); + } else { + objectToContext[_entityAdmin] = _entityId; + } + } + + /// @dev Create an entity for a NaymsAccount, and assign _entityId to NaymsAccount.entityId + function hCreateEntity(bytes32 _entityId, NaymsAccount memory _entityAdmin, Entity memory _entityData, bytes32 _dataHash) internal { + bytes32 previousParent = nayms.getEntity(_entityAdmin.id); + nayms.createEntity(_entityId, _entityAdmin.id, _entityData, _dataHash); + roleToUsers[LC.ROLE_ENTITY_ADMIN].push(_entityAdmin.id); + + if (objectToContext[_entityAdmin.id] == systemContext) { + c.log("warning: object's context is currently systemContext"); + } else { + objectToContext[_entityAdmin.id] = _entityId; + } + c.log(string.concat("The entity admin's parent has been updated from ", vm.toString(previousParent), " to ", vm.toString(_entityId))); + _entityAdmin.entityId = _entityId; + } + + /// @dev Return the role as a decoded string + function hGetRoleInContext(bytes32 objectId, bytes32 contextId) public view returns (string memory roleString) { + roleString = string(nayms.getRoleInContext(objectId, contextId)._bytes32ToBytes()); + } + + /// @dev Set the parent of the user and also update NaymsAccount.entityId + function hSetEntity(NaymsAccount memory acc, bytes32 entityId) public { + nayms.setEntity(acc.id, entityId); + acc.entityId = entityId; + } + + function logOfferDetails(uint256 offerId) public view returns (MarketInfo memory m) { + m = nayms.getOffer(offerId); + string memory offerState; + if (m.state == 1) offerState = "Active".green(); + if (m.state == 2) offerState = "Cancelled".red(); + if (m.state == 3) offerState = "Fulfilled".blue(); + + string memory sellSymbol = vm.toString(m.sellToken); + string memory buySymbol = vm.toString(m.buyToken); + + if (nayms.isSupportedExternalToken(m.sellToken)) { + sellSymbol = IERC20(LibHelpers._getAddressFromId(m.sellToken)).symbol(); + (, , buySymbol, , ) = nayms.getObjectMeta(m.buyToken); + } else { + (, , sellSymbol, , ) = nayms.getObjectMeta(m.sellToken); + buySymbol = IERC20(LibHelpers._getAddressFromId(m.buyToken)).symbol(); + } + + c.log(""); + c.log(string.concat("--".green(), " ID: ", vm.toString(offerId), " (", offerState, ") ", "---------------------------------------------".green())); + c.log(string.concat(" ", sellSymbol.red(), ": ", vm.toString(m.sellAmount), " (", vm.toString(m.sellAmountInitial), ")")); + c.log(string.concat(" ", buySymbol.green(), ": ", vm.toString(m.buyAmount), " (", vm.toString(m.buyAmountInitial), ")")); + + // price is multiplied by 1000 to prevent rounding loss for small amounts in tests + uint256 price = m.sellAmount == 0 ? 0 : ((m.buyAmount * 1000) / m.sellAmount); + uint256 priceInitial = m.sellAmountInitial == 0 ? 0 : ((m.buyAmountInitial * 1000) / m.sellAmountInitial); + c.log( + string.concat( + "-- ".green(), + "Price: ", + vm.toString(price).blue(), + " (", + vm.toString(priceInitial).blue(), + ")", + " ------------------------------------------------\n".green() + ) + ); + } + function b32Array1(bytes32 _value) internal pure returns (bytes32[] memory) { bytes32[] memory arr = new bytes32[](1); arr[0] = _value; return arr; } - function b32Array3( - bytes32 _value1, - bytes32 _value2, - bytes32 _value3 - ) internal pure returns (bytes32[] memory) { + function b32Array3(bytes32 _value1, bytes32 _value2, bytes32 _value3) internal pure returns (bytes32[] memory) { bytes32[] memory arr_ = new bytes32[](3); arr_[0] = _value1; arr_[1] = _value2; @@ -250,11 +307,7 @@ contract D03ProtocolDefaults is T02AccessHelpers { return arr; } - function u16Array3( - uint16 _value1, - uint16 _value2, - uint16 _value3 - ) internal pure returns (uint16[] memory) { + function u16Array3(uint16 _value1, uint16 _value2, uint16 _value3) internal pure returns (uint16[] memory) { uint16[] memory arr = new uint16[](3); arr[0] = _value1; arr[1] = _value2; @@ -268,11 +321,7 @@ contract D03ProtocolDefaults is T02AccessHelpers { return arr; } - function u256Array3( - uint256 _value1, - uint256 _value2, - uint256 _value3 - ) internal pure returns (uint256[] memory) { + function u256Array3(uint256 _value1, uint256 _value2, uint256 _value3) internal pure returns (uint256[] memory) { uint256[] memory arr = new uint256[](3); arr[0] = _value1; arr[1] = _value2; @@ -289,7 +338,7 @@ contract D03ProtocolDefaults is T02AccessHelpers { } function createTestEntity(bytes32 adminId) internal returns (bytes32) { - return createTestEntityWithId(adminId, "0xe1"); + return createTestEntityWithId(adminId, makeId(LC.OBJECT_TYPE_ENTITY, bytes20("0xe1"))); } function createTestEntityWithId(bytes32 adminId, bytes32 entityId) internal returns (bytes32) { @@ -298,12 +347,7 @@ contract D03ProtocolDefaults is T02AccessHelpers { return entityId; } - function initEntity( - bytes32 _assetId, - uint256 _collateralRatio, - uint256 _maxCapacity, - bool _simplePolicyEnabled - ) public pure returns (Entity memory e) { + function initEntity(bytes32 _assetId, uint256 _collateralRatio, uint256 _maxCapacity, bool _simplePolicyEnabled) public pure returns (Entity memory e) { e.assetId = _assetId; e.collateralRatio = _collateralRatio; e.maxCapacity = _maxCapacity; @@ -316,6 +360,14 @@ contract D03ProtocolDefaults is T02AccessHelpers { } function initPolicyWithLimit(bytes32 offchainDataHash, uint256 limitAmount) internal view returns (Stakeholders memory policyStakeholders, SimplePolicy memory policy) { + return initPolicyWithLimitAndAsset(offchainDataHash, limitAmount, wethId); + } + + function initPolicyWithLimitAndAsset( + bytes32 offchainDataHash, + uint256 limitAmount, + bytes32 assetId + ) internal view returns (Stakeholders memory policyStakeholders, SimplePolicy memory policy) { bytes32[] memory roles = new bytes32[](4); roles[0] = LibHelpers._stringToBytes32(LC.ROLE_UNDERWRITER); roles[1] = LibHelpers._stringToBytes32(LC.ROLE_BROKER); @@ -328,42 +380,64 @@ contract D03ProtocolDefaults is T02AccessHelpers { entityIds[2] = DEFAULT_CAPITAL_PROVIDER_ENTITY_ID; entityIds[3] = DEFAULT_INSURED_PARTY_ENTITY_ID; - bytes32[] memory commissionReceivers = new bytes32[](3); - commissionReceivers[0] = DEFAULT_UNDERWRITER_ENTITY_ID; - commissionReceivers[1] = DEFAULT_BROKER_ENTITY_ID; - commissionReceivers[2] = DEFAULT_CAPITAL_PROVIDER_ENTITY_ID; - - uint256[] memory commissions = new uint256[](3); - commissions[0] = 10; - commissions[1] = 10; - commissions[2] = 10; - - policy.startDate = block.timestamp + 1000; - policy.maturationDate = block.timestamp + 1000 + 2 days; - policy.asset = wethId; - policy.limit = limitAmount; - policy.commissionReceivers = commissionReceivers; - policy.commissionBasisPoints = commissions; - - bytes[] memory signatures = new bytes[](4); + { + bytes32[] memory commissionReceivers = new bytes32[](3); + commissionReceivers[0] = DEFAULT_UNDERWRITER_ENTITY_ID; + commissionReceivers[1] = DEFAULT_BROKER_ENTITY_ID; + commissionReceivers[2] = DEFAULT_CAPITAL_PROVIDER_ENTITY_ID; + + uint256[] memory commissions = new uint256[](3); + commissions[0] = 10; + commissions[1] = 10; + commissions[2] = 10; + + policy.startDate = block.timestamp + 1000; + policy.maturationDate = block.timestamp + 1000 + 2 days; + policy.asset = assetId; + policy.limit = limitAmount; + policy.commissionReceivers = commissionReceivers; + policy.commissionBasisPoints = commissions; + } - bytes32 signingHash = nayms.getSigningHash(policy.startDate, policy.maturationDate, policy.asset, policy.limit, offchainDataHash); + { + bytes[] memory signatures = new bytes[](4); + bytes32 signingHash = nayms.getSigningHash(policy.startDate, policy.maturationDate, policy.asset, policy.limit, offchainDataHash); - signatures[0] = initPolicySig(0xACC2, signingHash); - signatures[1] = initPolicySig(0xACC1, signingHash); - signatures[2] = initPolicySig(0xACC3, signingHash); - signatures[3] = initPolicySig(0xACC4, signingHash); + signatures[0] = initPolicySig(0xACC2, signingHash); + signatures[1] = initPolicySig(0xACC1, signingHash); + signatures[2] = initPolicySig(0xACC3, signingHash); + signatures[3] = initPolicySig(0xACC4, signingHash); - policyStakeholders = Stakeholders(roles, entityIds, signatures); + policyStakeholders = Stakeholders(roles, entityIds, signatures); + } } function initPolicySig(uint256 privateKey, bytes32 signingHash) internal pure returns (bytes memory sig_) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(privateKey, ECDSA.toEthSignedMessageHash(signingHash)); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(privateKey, MessageHashUtils.toEthSignedMessageHash(signingHash)); sig_ = abi.encodePacked(r, s, v); } + function fundEntityWeth(NaymsAccount memory acc, uint256 amount) internal { + deal(address(weth), acc.addr, amount); + changePrank(acc.addr); + weth.approve(address(nayms), amount); + uint256 balanceBefore = nayms.internalBalanceOf(acc.entityId, wethId); + nayms.externalDeposit(address(weth), amount); + assertEq(nayms.internalBalanceOf(acc.entityId, wethId), balanceBefore + amount, "entity's weth balance is incorrect"); + } + + function fundEntityUsdc(NaymsAccount memory acc, uint256 amount) internal { + deal(usdcAddress, acc.addr, amount); + changePrank(acc.addr); + usdc.approve(address(nayms), amount); + uint256 balanceBefore = nayms.internalBalanceOf(acc.entityId, usdcId); + nayms.externalDeposit(usdcAddress, amount); + uint256 balanceAfter = nayms.internalBalanceOf(acc.entityId, usdcId); + assertEq(balanceAfter, balanceBefore + amount, "entity's usdc balance is incorrect"); + } + /// Pretty print /// - function hCr(bytes32 objectId) public { + function hCr(bytes32 objectId) public view { bytes32[] memory cr = nayms.getPolicyCommissionReceivers(objectId); c.log(string.concat(vm.toString(objectId), "'s commission receivers:").blue()); for (uint256 i; i < cr.length; i++) { diff --git a/test/fixtures/InitDiamondFixture.sol b/test/fixtures/InitDiamondFixture.sol index 2e4a3011..6a298140 100644 --- a/test/fixtures/InitDiamondFixture.sol +++ b/test/fixtures/InitDiamondFixture.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { InitDiamond } from "src/diamonds/nayms/InitDiamond.sol"; -import { NaymsTokenFacet } from "src/diamonds/nayms/facets/NaymsTokenFacet.sol"; -import { AdminFacet } from "src/diamonds/nayms/facets/AdminFacet.sol"; -import { SystemFacet } from "src/diamonds/nayms/facets/SystemFacet.sol"; +import { InitDiamond } from "src/init/InitDiamond.sol"; +import { NaymsTokenFacet } from "src/facets/NaymsTokenFacet.sol"; +import { AdminFacet } from "src/facets/AdminFacet.sol"; +import { SystemFacet } from "src/facets/SystemFacet.sol"; // solhint-disable no-empty-blocks diff --git a/test/fixtures/LibERC20Fixture.sol b/test/fixtures/LibERC20Fixture.sol index ca41ebae..4ec4b64e 100644 --- a/test/fixtures/LibERC20Fixture.sol +++ b/test/fixtures/LibERC20Fixture.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { LibERC20 } from "src/erc20/LibERC20.sol"; +import { LibERC20 } from "src/libs/LibERC20.sol"; /// Create a fixture to test the library LibERC20 @@ -18,20 +18,11 @@ contract LibERC20Fixture { return LibERC20.balanceOf(_token, _who); } - function transferFrom( - address _token, - address _from, - address _to, - uint256 _value - ) external { + function transferFrom(address _token, address _from, address _to, uint256 _value) external { LibERC20.transferFrom(_token, _from, _to, _value); } - function transfer( - address _token, - address _to, - uint256 _value - ) external { + function transfer(address _token, address _to, uint256 _value) external { LibERC20.transfer(_token, _to, _value); } } diff --git a/test/fixtures/LibFeeRouterFixture.sol b/test/fixtures/LibFeeRouterFixture.sol index 7e8a7ea0..b04e63bf 100644 --- a/test/fixtures/LibFeeRouterFixture.sol +++ b/test/fixtures/LibFeeRouterFixture.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { LibConstants } from "src/diamonds/nayms/libs/LibConstants.sol"; -import { LibFeeRouter, CalculatedFees, FeeAllocation, FeeSchedule } from "src/diamonds/nayms/libs/LibFeeRouter.sol"; +import { LibConstants } from "src/libs/LibConstants.sol"; +import { LibFeeRouter, CalculatedFees, FeeAllocation, FeeSchedule } from "src/libs/LibFeeRouter.sol"; /// Create a fixture to test the library LibFeeRouter @@ -24,13 +24,7 @@ contract LibFeeRouterFixture { return LibFeeRouter._calculateTradingFees(_buyerId, _sellToken, _buyToken, _buyAmount); } - function exposed_payTradingFees( - bytes32 _buyer, - bytes32 _makerId, - bytes32 _takerId, - bytes32 _tokenId, - uint256 _buyAmount - ) external returns (uint256 totalFees_) { + function exposed_payTradingFees(bytes32 _buyer, bytes32 _makerId, bytes32 _takerId, bytes32 _tokenId, uint256 _buyAmount) external returns (uint256 totalFees_) { return LibFeeRouter._payTradingFees(LibConstants.FEE_TYPE_TRADING, _buyer, _makerId, _takerId, _tokenId, _buyAmount); } } diff --git a/test/fixtures/SimplePolicyFixture.sol b/test/fixtures/SimplePolicyFixture.sol index 14fcd87e..3665d475 100644 --- a/test/fixtures/SimplePolicyFixture.sol +++ b/test/fixtures/SimplePolicyFixture.sol @@ -1,13 +1,13 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { AppStorage, LibAppStorage } from "src/diamonds/nayms/AppStorage.sol"; -import { LibSimplePolicy } from "src/diamonds/nayms/libs/LibSimplePolicy.sol"; +import { AppStorage, LibAppStorage } from "src/shared/AppStorage.sol"; +import { LibSimplePolicy } from "src/libs/LibSimplePolicy.sol"; -import { SimplePolicy } from "src/diamonds/nayms/interfaces/FreeStructs.sol"; +import { SimplePolicy } from "src/shared/FreeStructs.sol"; contract SimplePolicyFixture { - function getFullInfo(bytes32 _policyId) public returns (SimplePolicy memory) { + function getFullInfo(bytes32 _policyId) public view returns (SimplePolicy memory) { return LibSimplePolicy._getSimplePolicyInfo(_policyId); } diff --git a/test/fixtures/TokenizedVaultFixture.sol b/test/fixtures/TokenizedVaultFixture.sol index 672c91a3..51563f7f 100644 --- a/test/fixtures/TokenizedVaultFixture.sol +++ b/test/fixtures/TokenizedVaultFixture.sol @@ -1,15 +1,11 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { LibTokenizedVaultIO } from "src/diamonds/nayms/libs/LibTokenizedVaultIO.sol"; -import { LibAdmin } from "src/diamonds/nayms/libs/LibAdmin.sol"; +import { LibTokenizedVaultIO } from "src/libs/LibTokenizedVaultIO.sol"; +import { LibAdmin } from "src/libs/LibAdmin.sol"; contract TokenizedVaultFixture { - function externalDepositDirect( - bytes32 _to, - address _externalTokenAddress, - uint256 _amount - ) public { + function externalDepositDirect(bytes32 _to, address _externalTokenAddress, uint256 _amount) public { // a user can only deposit an approved external ERC20 token require(LibAdmin._isSupportedExternalTokenAddress(_externalTokenAddress), "extDeposit: invalid ERC20 token"); LibTokenizedVaultIO._externalDeposit(_to, _externalTokenAddress, _amount); diff --git a/test/utils/BadToken.sol b/test/utils/BadToken.sol index 35d3c3b3..523ac903 100644 --- a/test/utils/BadToken.sol +++ b/test/utils/BadToken.sol @@ -1,26 +1,26 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { IERC20 } from "src/erc20/IERC20.sol"; +import { IERC20 } from "src/interfaces/IERC20.sol"; // solhint-disable no-unused-vars contract BadToken is IERC20 { uint256 public totalSupply = 0; mapping(address => mapping(address => uint256)) public allowance; - function name() external view returns (string memory) { + function name() external pure returns (string memory) { revert("no name"); } - function symbol() external view returns (string memory) { + function symbol() external pure returns (string memory) { revert("no symbol"); } - function decimals() external view returns (uint8) { + function decimals() external pure returns (uint8) { revert("no decimals"); } - function balanceOf(address who) external view returns (uint256) { + function balanceOf(address who) external pure returns (uint256) { revert("not supported"); } @@ -32,11 +32,7 @@ contract BadToken is IERC20 { revert("not supported"); } - function transferFrom( - address, - address, - uint256 - ) external pure returns (bool) { + function transferFrom(address, address, uint256) external pure returns (bool) { revert("not supported"); } @@ -44,15 +40,7 @@ contract BadToken is IERC20 { revert("not supported"); } - function permit( - address, - address, - uint256, - uint256, - uint8, - bytes32, - bytes32 - ) external pure { + function permit(address, address, uint256, uint256, uint8, bytes32, bytes32) external pure { revert("not supported"); } } diff --git a/test/utils/DSILib.sol b/test/utils/DSILib.sol index b61814e2..cc039d3a 100644 --- a/test/utils/DSILib.sol +++ b/test/utils/DSILib.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; import { Vm } from "forge-std/Vm.sol"; diff --git a/test/utils/DummyToken.sol b/test/utils/DummyToken.sol index 06ce42be..921d18e0 100644 --- a/test/utils/DummyToken.sol +++ b/test/utils/DummyToken.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; -import { IERC20 } from "src/erc20/IERC20.sol"; +import { IERC20 } from "src/interfaces/IERC20.sol"; contract DummyToken is IERC20 { string public name = "Dummy"; @@ -27,11 +27,7 @@ contract DummyToken is IERC20 { return true; } - function transferFrom( - address from, - address to, - uint256 value - ) external returns (bool) { + function transferFrom(address from, address to, uint256 value) external returns (bool) { if (value == 0) { revert(); } @@ -48,13 +44,5 @@ contract DummyToken is IERC20 { totalSupply += value; } - function permit( - address owner, - address spender, - uint256 value, - uint256 deadline, - uint8 v, - bytes32 r, - bytes32 s - ) external {} + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external {} } diff --git a/test/utils/users/MockAccounts.sol b/test/utils/users/MockAccounts.sol index 42a03345..36c69717 100644 --- a/test/utils/users/MockAccounts.sol +++ b/test/utils/users/MockAccounts.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity 0.8.17; +pragma solidity 0.8.20; abstract contract MockAccounts { // address internal constant account0 = address(0xACC0); diff --git a/yarn.lock b/yarn.lock index 70d731f2..4d4959cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,27 +2,45 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@adraffy/ens-normalize@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" + integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== + "@babel/code-frame@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/highlight" "^7.18.6" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@ensdomains/ens@^0.4.4": version "0.4.5" resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" @@ -39,21 +57,38 @@ resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== -"@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.6.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.3.2" - globals "^13.15.0" + espree "^9.6.0" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== + "@ethereum-waffle/chai@^3.4.4": version "3.4.4" resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.4.4.tgz#16c4cc877df31b035d6d92486dfdf983df9138ff" @@ -107,6 +142,14 @@ patch-package "^6.2.2" postinstall-postinstall "^2.1.0" +"@ethereumjs/common@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" + integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.1" + "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4": version "2.6.5" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" @@ -115,6 +158,19 @@ crc-32 "^1.2.0" ethereumjs-util "^7.1.5" +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/tx@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" + integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== + dependencies: + "@ethereumjs/common" "^2.5.0" + ethereumjs-util "^7.1.2" + "@ethereumjs/tx@^3.3.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" @@ -123,6 +179,15 @@ "@ethereumjs/common" "^2.6.4" ethereumjs-util "^7.1.5" +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + "@ethersproject/abi@5.0.0-beta.153": version "5.0.0-beta.153" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" @@ -138,360 +203,434 @@ "@ethersproject/properties" ">=5.0.0-beta.131" "@ethersproject/strings" ">=5.0.0-beta.130" -"@ethersproject/abi@5.6.4", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3": - version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.4.tgz#f6e01b6ed391a505932698ecc0d9e7a99ee60362" - integrity sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg== - dependencies: - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/abstract-provider@5.6.1", "@ethersproject/abstract-provider@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" - integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.3" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/web" "^5.6.1" - -"@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" - integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/address@5.6.1", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" - integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/rlp" "^5.6.1" - -"@ethersproject/base64@5.6.1", "@ethersproject/base64@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" - integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - -"@ethersproject/basex@5.6.1", "@ethersproject/basex@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" - integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/bignumber@5.6.2", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" - integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" bn.js "^5.2.1" -"@ethersproject/bytes@5.6.1", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" - integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/constants@5.6.1", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" - integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - -"@ethersproject/contracts@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" - integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== - dependencies: - "@ethersproject/abi" "^5.6.3" - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.2" - -"@ethersproject/hash@5.6.1", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" - integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/hdnode@5.6.2", "@ethersproject/hdnode@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" - integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/basex" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/wordlists" "^5.6.1" - -"@ethersproject/json-wallets@5.6.1", "@ethersproject/json-wallets@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" - integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hdnode" "^5.6.2" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.6.1", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" - integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== dependencies: - "@ethersproject/bytes" "^5.6.1" + "@ethersproject/bytes" "^5.7.0" js-sha3 "0.8.0" -"@ethersproject/logger@5.6.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" - integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== - -"@ethersproject/networks@5.6.4", "@ethersproject/networks@^5.6.3": - version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" - integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/pbkdf2@5.6.1", "@ethersproject/pbkdf2@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" - integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/sha2" "^5.6.1" - -"@ethersproject/properties@5.6.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" - integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/providers@5.6.8": - version "5.6.8" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" - integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/base64" "^5.6.1" - "@ethersproject/basex" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.3" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/rlp" "^5.6.1" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/web" "^5.6.1" +"@ethersproject/logger@5.7.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" bech32 "1.1.4" ws "7.4.6" -"@ethersproject/random@5.6.1", "@ethersproject/random@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" - integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" -"@ethersproject/rlp@5.6.1", "@ethersproject/rlp@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" - integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" -"@ethersproject/sha2@5.6.1", "@ethersproject/sha2@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" - integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" hash.js "1.1.7" -"@ethersproject/signing-key@5.6.2", "@ethersproject/signing-key@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" - integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" bn.js "^5.2.1" elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/solidity@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" - integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/strings@5.6.1", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" - integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/transactions@5.6.2", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" - integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== - dependencies: - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/rlp" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - -"@ethersproject/units@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" - integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/wallet@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" - integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/hdnode" "^5.6.2" - "@ethersproject/json-wallets" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/wordlists" "^5.6.1" - -"@ethersproject/web@5.6.1", "@ethersproject/web@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" - integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== - dependencies: - "@ethersproject/base64" "^5.6.1" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/wordlists@5.6.1", "@ethersproject/wordlists@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" - integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@humanwhocodes/config-array@^0.11.11": + version "0.11.12" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.12.tgz#549afec9bfce5232ac6325db12765f407e70e3a0" + integrity sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA== + dependencies: + "@humanwhocodes/object-schema" "^2.0.0" debug "^4.1.1" - minimatch "^3.0.4" + minimatch "^3.0.5" -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.0.tgz#04ad39d82176c7da1591c81e78b993cffd8348d8" + integrity sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@ljharb/resumer@~0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@ljharb/resumer/-/resumer-0.0.1.tgz#8a940a9192dd31f6a1df17564bbd26dc6ad3e68d" + integrity sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw== + dependencies: + "@ljharb/through" "^2.3.9" + +"@ljharb/through@^2.3.9", "@ljharb/through@~2.3.9": + version "2.3.11" + resolved "https://registry.yarnpkg.com/@ljharb/through/-/through-2.3.11.tgz#783600ff12c06f21a76cc26e33abd0b1595092f9" + integrity sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w== + dependencies: + call-bind "^1.0.2" + +"@noble/curves@1.1.0", "@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/hashes@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + +"@noble/hashes@1.3.2", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -506,7 +645,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3": +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -515,57 +654,55 @@ fastq "^1.6.0" "@oclif/command@^1.8.0": - version "1.8.16" - resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.16.tgz#bea46f81b2061b47e1cda318a0b923e62ca4cc0c" - integrity sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w== + version "1.8.36" + resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.36.tgz#9739b9c268580d064a50887c4597d1b4e86ca8b5" + integrity sha512-/zACSgaYGtAQRzc7HjzrlIs14FuEYAZrMOEwicRoUnZVyRunG4+t5iSEeQu0Xy2bgbCD0U1SP/EdeNZSTXRwjQ== dependencies: "@oclif/config" "^1.18.2" - "@oclif/errors" "^1.3.5" + "@oclif/errors" "^1.3.6" "@oclif/help" "^1.0.1" - "@oclif/parser" "^3.8.6" + "@oclif/parser" "^3.8.17" debug "^4.1.1" - semver "^7.3.2" + semver "^7.5.4" -"@oclif/config@1.18.2": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.2.tgz#5bfe74a9ba6a8ca3dceb314a81bd9ce2e15ebbfe" - integrity sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA== +"@oclif/config@1.18.16": + version "1.18.16" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.16.tgz#3235d260ab1eb8388ebb6255bca3dd956249d796" + integrity sha512-VskIxVcN22qJzxRUq+raalq6Q3HUde7sokB7/xk5TqRZGEKRVbFeqdQBxDWwQeudiJEgcNiMvIFbMQ43dY37FA== dependencies: - "@oclif/errors" "^1.3.3" - "@oclif/parser" "^3.8.0" - debug "^4.1.1" - globby "^11.0.1" + "@oclif/errors" "^1.3.6" + "@oclif/parser" "^3.8.16" + debug "^4.3.4" + globby "^11.1.0" is-wsl "^2.1.1" - tslib "^2.0.0" + tslib "^2.6.1" "@oclif/config@^1.17.0", "@oclif/config@^1.18.2": - version "1.18.3" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.3.tgz#ddfc144fdab66b1658c2f1b3478fa7fbfd317e79" - integrity sha512-sBpko86IrTscc39EvHUhL+c++81BVTsIZ3ETu/vG+cCdi0N6vb2DoahR67A9FI2CGnxRRHjnTfa3m6LulwNATA== + version "1.18.17" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.17.tgz#00aa4049da27edca8f06fc106832d9f0f38786a5" + integrity sha512-k77qyeUvjU8qAJ3XK3fr/QVAqsZO8QOBuESnfeM5HHtPNLSyfVcwiMM2zveSW5xRdLSG3MfV8QnLVkuyCL2ENg== dependencies: - "@oclif/errors" "^1.3.5" - "@oclif/parser" "^3.8.0" - debug "^4.1.1" - globby "^11.0.1" + "@oclif/errors" "^1.3.6" + "@oclif/parser" "^3.8.17" + debug "^4.3.4" + globby "^11.1.0" is-wsl "^2.1.1" - tslib "^2.3.1" + tslib "^2.6.1" -"@oclif/core@^1.20.0": - version "1.20.2" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-1.20.2.tgz#724713086355d693e578960f72c7e2d14fd3e7c3" - integrity sha512-c6CpDbDPS9UuKwGoajzsjrjfnwQywWEV3WI5FDvb87h0/WW2tGf1QwHUWgdKOojafEcMAa9DnP5j+mXdUTtpCg== +"@oclif/core@^2.15.0": + version "2.15.0" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-2.15.0.tgz#f27797b30a77d13279fba88c1698fc34a0bd0d2a" + integrity sha512-fNEMG5DzJHhYmI3MgpByTvltBOMyFcnRIUMxbiz2ai8rhaYgaTHMG3Q38HcosfIvtw9nCjxpcQtC8MN8QtVCcA== dependencies: - "@oclif/linewrap" "^1.0.0" - "@oclif/screen" "^3.0.2" + "@types/cli-progress" "^3.11.0" ansi-escapes "^4.3.2" ansi-styles "^4.3.0" cardinal "^2.1.1" chalk "^4.1.2" clean-stack "^3.0.1" - cli-progress "^3.10.0" + cli-progress "^3.12.0" debug "^4.3.4" - ejs "^3.1.6" - fs-extra "^9.1.0" + ejs "^3.1.8" get-package-type "^0.1.0" globby "^11.1.0" hyperlinker "^1.0.0" @@ -575,33 +712,35 @@ natural-orderby "^2.0.3" object-treeify "^1.1.33" password-prompt "^1.1.2" - semver "^7.3.7" + slice-ansi "^4.0.0" string-width "^4.2.3" strip-ansi "^6.0.1" supports-color "^8.1.1" supports-hyperlinks "^2.2.0" - tslib "^2.3.1" + ts-node "^10.9.1" + tslib "^2.5.0" widest-line "^3.1.0" + wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/errors@1.3.5", "@oclif/errors@^1.3.3", "@oclif/errors@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.5.tgz#a1e9694dbeccab10fe2fe15acb7113991bed636c" - integrity sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ== +"@oclif/errors@1.3.6", "@oclif/errors@^1.3.3", "@oclif/errors@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.6.tgz#e8fe1fc12346cb77c4f274e26891964f5175f75d" + integrity sha512-fYaU4aDceETd89KXP+3cLyg9EHZsLD3RxF2IU9yxahhBpspWjkWi3Dy3bTgcwZ3V47BgxQaGapzJWDM33XIVDQ== dependencies: clean-stack "^3.0.0" fs-extra "^8.1" indent-string "^4.0.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" wrap-ansi "^7.0.0" "@oclif/help@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.1.tgz#fd96a3dd9fb2314479e6c8584c91b63754a7dff5" - integrity sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw== + version "1.0.15" + resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.15.tgz#5e36e576b8132a4906d2662204ad9de7ece87e8f" + integrity sha512-Yt8UHoetk/XqohYX76DfdrUYLsPKMc5pgkzsZVHDyBSkLiGRzujVaGZdjr32ckVZU9q3a47IjhWxhip7Dz5W/g== dependencies: - "@oclif/config" "1.18.2" - "@oclif/errors" "1.3.5" + "@oclif/config" "1.18.16" + "@oclif/errors" "1.3.6" chalk "^4.1.2" indent-string "^4.0.0" lodash "^4.17.21" @@ -615,27 +754,27 @@ resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== -"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.6": - version "3.8.7" - resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.7.tgz#236d48db05d0b00157d3b42d31f9dac7550d2a7c" - integrity sha512-b11xBmIUK+LuuwVGJpFs4LwQN2xj2cBWj2c4z1FtiXGrJ85h9xV6q+k136Hw0tGg1jQoRXuvuBnqQ7es7vO9/Q== +"@oclif/parser@^3.8.16", "@oclif/parser@^3.8.17": + version "3.8.17" + resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.17.tgz#e1ce0f29b22762d752d9da1c7abd57ad81c56188" + integrity sha512-l04iSd0xoh/16TGVpXb81Gg3z7tlQGrEup16BrVLsZBK6SEYpYHRJZnM32BwZrHI97ZSFfuSwVlzoo6HdsaK8A== dependencies: - "@oclif/errors" "^1.3.5" + "@oclif/errors" "^1.3.6" "@oclif/linewrap" "^1.0.0" chalk "^4.1.0" - tslib "^2.3.1" + tslib "^2.6.2" "@oclif/plugin-help@^5.0.0": - version "5.1.17" - resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-5.1.17.tgz#7ecef29b947efe57aefc5a044ec79d8dbe9e024a" - integrity sha512-yc35xn4lSkHTnS6ajolYAi9dVMWXsRRPPPNEfYF0Nq1bkKNnh3DEC1MS/iTWNEYC5JCVd4YAQ2/Ky2wqA2Ujiw== + version "5.2.20" + resolved "https://registry.yarnpkg.com/@oclif/plugin-help/-/plugin-help-5.2.20.tgz#4035a0ac231f95fb8e334da342175e3ca00f6abc" + integrity sha512-u+GXX/KAGL9S10LxAwNUaWdzbEBARJ92ogmM7g3gDVud2HioCmvWQCDohNRVZ9GYV9oKwZ/M8xwd6a1d95rEKQ== dependencies: - "@oclif/core" "^1.20.0" + "@oclif/core" "^2.15.0" -"@oclif/screen@^3.0.2": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@oclif/screen/-/screen-3.0.3.tgz#e679ad10535e31d333f809f7a71335cc9aef1e55" - integrity sha512-KX8gMYA9ujBPOd1HFsV9e0iEx7Uoj8AG/3YsW4TtWQTg4lJvr82qNm7o/cFQfYRIt+jw7Ew/4oL4A22zOT+IRA== +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@resolver-engine/core@^0.3.3": version "0.3.3" @@ -674,15 +813,49 @@ path-browserify "^1.0.0" url "^0.11.0" +"@scure/base@~1.1.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" + integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== + +"@scure/bip32@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== + dependencies: + "@noble/curves" "~1.1.0" + "@noble/hashes" "~1.3.1" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1", "@solidity-parser/parser@^0.14.3": - version "0.14.3" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.3.tgz#0d627427b35a40d8521aaa933cc3df7d07bfa36f" - integrity sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw== +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@solidity-parser/parser@^0.14.0": + version "0.14.5" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@solidity-parser/parser@^0.16.0", "@solidity-parser/parser@^0.16.1": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.1.tgz#f7c8a686974e1536da0105466c4db6727311253c" + integrity sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw== dependencies: antlr4ts "^0.5.0-alpha.4" @@ -693,30 +866,64 @@ dependencies: defer-to-connect "^1.0.1" -"@truffle/error@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.0.tgz#5e9fed79e6cda624c926d314b280a576f8b22a36" - integrity sha512-RbUfp5VreNhsa2Q4YbBjz18rOQI909pG32bghl1hulO7IpvcqTS+C3Ge5cNbiWQ1WGzy1wIeKLW0tmQtHFB7qg== +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@truffle/error@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.1.tgz#e52026ac8ca7180d83443dca73c03e07ace2a301" + integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== -"@truffle/interface-adapter@^0.5.19": - version "0.5.19" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.19.tgz#57529cacb09c72ebfd584ec003af55face18a3de" - integrity sha512-x7IZvsyx36DAJCJVZ9gUe1Lh8AhODhJoW7I+lJXIlGxj3EmZbao4/sHo+cN4u9i94yVTyGwYd78NzbP0a/LAog== +"@truffle/interface-adapter@^0.5.25": + version "0.5.37" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.37.tgz#95d249c1912d2baaa63c54e8a138d3f476a1181a" + integrity sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw== dependencies: bn.js "^5.1.3" ethers "^4.0.32" - web3 "1.7.4" + web3 "1.10.0" "@truffle/provider@^0.2.24": - version "0.2.57" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.57.tgz#c6d079748c99427c1ce283a19921b450aa9920ee" - integrity sha512-O8VxF2uQwa+KB4HDg9lG7uhQ/+AOvchX+1STpQBSSAGfov1+EROM0iRZUNoPm71Pu0C9ji2WmXbNW/COjUMaMA== + version "0.2.64" + resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.64.tgz#7dd55117307fd019dcf81d08db5dc2bc5728f51c" + integrity sha512-ZwPsofw4EsCq/2h0t73SPnnFezu4YQWBmK4FxFaOUX0F+o8NsZuHKyfJzuZwyZbiktYmefM3yD9rM0Dj4BhNbw== dependencies: - "@truffle/error" "^0.1.0" - "@truffle/interface-adapter" "^0.5.19" + "@truffle/error" "^0.1.1" + "@truffle/interface-adapter" "^0.5.25" debug "^4.3.1" web3 "1.7.4" +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + "@typechain/ethers-v5@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz#cd3ca1590240d587ca301f4c029b67bfccd08810" @@ -731,10 +938,27 @@ dependencies: "@types/node" "*" -"@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== +"@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.3.tgz#0857f00da3bf888a26a44b4a477c7819b17dacc5" + integrity sha512-wT1B4iIO82ecXkdN6waCK8Ou7E71WU+mP1osDA5Q8c6Ur+ozU2vIKUIhSpUr6uE5L2YHocKS1Z2jG2fBC1YVeg== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/cli-progress@^3.11.0": + version "3.11.4" + resolved "https://registry.yarnpkg.com/@types/cli-progress/-/cli-progress-3.11.4.tgz#58d9e60bd5fd85a57984890ef9c9d831a0dda896" + integrity sha512-yufTxeeNCZuEIxx2uebK8lpSAsJM4lvzakm/VxzYhDtqhXCzwH9jpn7nPCxzrROuEbLATqhFq4MIPoG0tlrsvw== dependencies: "@types/node" "*" @@ -746,15 +970,27 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/http-cache-semantics@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#a3ff232bf7d5c55f38e4e45693eda2ebb545794d" + integrity sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + "@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/mkdirp@^0.5.2": version "0.5.2" @@ -764,17 +1000,24 @@ "@types/node" "*" "@types/node-fetch@^2.5.5": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" - integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + version "2.6.7" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.7.tgz#a1abe2ce24228b58ad97f99480fdcf9bbc6ab16d" + integrity sha512-lX17GZVpJ/fuCjguZ5b3TjEbSENxmEk1B2z02yoXSK9WMEWRivhdSY73wWMn6bpcCDAOh6qAdktpKHIlkDk2lg== dependencies: "@types/node" "*" - form-data "^3.0.0" + form-data "^4.0.0" "@types/node@*": - version "18.6.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.1.tgz#828e4785ccca13f44e2fb6852ae0ef11e3e20ba5" - integrity sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== + dependencies: + undici-types "~5.25.1" + +"@types/node@18.15.13": + version "18.15.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.13.tgz#f64277c341150c979e42b00e4ac289290c9df469" + integrity sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q== "@types/node@^12.12.6": version "12.20.55" @@ -782,16 +1025,16 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.1.tgz#c290c1f0d3dc364af94c2c5ee92046a13b7f89fd" + integrity sha512-4HCoGwR3221nOc7G0Z/6KgTNGgaaFGkbGrtUJsB+zlKX2LBVjFHHIUkieMBgHHXgBH5Gq6dZHJKdBYdtlhBQvw== dependencies: "@types/node" "*" "@types/prettier@^2.1.1": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" - integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/resolve@^0.0.8": version "0.0.8" @@ -800,10 +1043,17 @@ dependencies: "@types/node" "*" +"@types/responselike@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.2.tgz#8de1b0477fd7c12df77e50832fa51701a8414bd6" + integrity sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA== + dependencies: + "@types/node" "*" + "@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.5.tgz#14b1766b4fbc198b0af5599d9fd21c89056633ce" + integrity sha512-aIonTBMErtE3T9MxDvTZRzcrT/mCqpEZBw3CCY/i+oG9n57N/+7obBkhFgavUAIrX21bU0LHg1XRgtaLdelBhA== dependencies: "@types/node" "*" @@ -822,6 +1072,11 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== +abortcontroller-polyfill@^1.7.3: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + abstract-leveldown@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" @@ -858,37 +1113,42 @@ accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-jsx@^5.0.0, acorn-jsx@^5.3.2: +acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^6.0.7: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.7.1: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +acorn@^8.4.1, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== address@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9" - integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig== + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + aes-js@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: +ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -898,16 +1158,21 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== -ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -920,27 +1185,22 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -954,21 +1214,31 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg== -antlr4@4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.7.1.tgz#69984014f096e9e775f53dd9744bf994d8959773" - integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== +antlr4@^4.11.0: + version "4.13.1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.13.1.tgz#1e0a1830a08faeb86217cb2e6c34716004e4253d" + integrity sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA== antlr4ts@^0.5.0-alpha.4: version "0.5.0-alpha.4" resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1010,20 +1280,28 @@ array-back@^2.0.0: dependencies: typical "^2.6.1" +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== +array-includes@^3.1.6: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" is-string "^1.0.7" array-union@^2.1.0: @@ -1036,27 +1314,61 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== +array.prototype.findlastindex@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== +array.prototype.flat@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.reduce@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" + integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -1084,15 +1396,15 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -ast-parents@0.0.1: +ast-parents@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-eventemitter@^0.2.2: version "0.2.4" @@ -1156,9 +1468,9 @@ aws-sign2@~0.7.0: integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== babel-code-frame@^6.26.0: version "6.26.0" @@ -1729,9 +2041,9 @@ bech32@1.1.4: integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== bignumber.js@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== bip39@2.5.0: version "2.5.0" @@ -1769,10 +2081,10 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2 resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.0, body-parser@^1.16.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" content-type "~1.0.4" @@ -1782,11 +2094,29 @@ body-parser@1.20.0, body-parser@^1.16.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.10.3" + qs "6.11.0" raw-body "2.5.1" type-is "~1.6.18" unpipe "1.0.0" +body-parser@^1.16.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1939,9 +2269,9 @@ buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: ieee754 "^1.1.13" bufferutil@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" - integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== dependencies: node-gyp-build "^4.3.0" @@ -1980,6 +2310,16 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-lookup@^6.0.4: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" @@ -1993,6 +2333,19 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + cachedown@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" @@ -2001,32 +2354,14 @@ cachedown@1.0.0: abstract-leveldown "^2.4.1" lru-cache "^3.2.0" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@~1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -2039,9 +2374,9 @@ camelcase@^3.0.0: integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== caniuse-lite@^1.0.30000844: - version "1.0.30001370" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz#0a30d4f20d38b9e108cc5ae7cc62df9fe66cd5ba" - integrity sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== cardinal@^2.1.1: version "2.1.1" @@ -2075,7 +2410,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2084,10 +2419,10 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== checkpoint-store@^1.1.0: version "1.1.0" @@ -2147,25 +2482,13 @@ clean-stack@^3.0.0, clean-stack@^3.0.1: dependencies: escape-string-regexp "4.0.0" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== - dependencies: - restore-cursor "^2.0.0" - -cli-progress@^3.10.0: - version "3.11.2" - resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.11.2.tgz#f8c89bd157e74f3f2c43bcfb3505670b4d48fc77" - integrity sha512-lCPoS6ncgX4+rJu5bS3F/iCz17kZ9MPZ6dpuTtI0KXKABkhyXIdYB3Inby1OpaGti3YlI3EeEkM9AuWpelJrVA== +cli-progress@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.12.0.tgz#807ee14b66bcc086258e444ad0f19e7d42577942" + integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A== dependencies: string-width "^4.2.3" -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -2245,16 +2568,21 @@ command-line-args@^4.0.7: find-replace "^1.0.3" typical "^2.6.1" -commander@2.18.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" - integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== - commander@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" + integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== + commander@^8.1.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -2296,17 +2624,15 @@ content-hash@^2.5.2: multicodec "^0.5.5" multihashes "^0.4.15" -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== convert-source-map@^1.5.1: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cookie-signature@1.0.6: version "1.0.6" @@ -2319,9 +2645,9 @@ cookie@0.5.0: integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== cookiejar@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== copy-descriptor@^0.1.0: version "0.1.1" @@ -2329,9 +2655,9 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-pure@^3.0.1: - version "3.24.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.24.0.tgz#10eeb90dbf0d670a6b22b081aecc7deb2faec7e1" - integrity sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA== + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.1.tgz#7f27dd239da8eb97dbea30120071be8e5565cb0e" + integrity sha512-wCXGbLjnsP10PlK/thHSQlOLlLKNEkaWbTzVvHHZ79fZNeN1gUmw2gBlpItxPv/pvqldevEXFh/d5stdNvl6EQ== core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" @@ -2356,15 +2682,15 @@ cors@^2.8.1: object-assign "^4" vary "^1" -cosmiconfig@^5.0.7: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== +cosmiconfig@^8.0.0: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" crc-32@^1.2.0: version "1.2.2" @@ -2402,6 +2728,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-fetch@^2.1.0, cross-fetch@^2.1.1: version "2.2.6" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" @@ -2410,6 +2741,13 @@ cross-fetch@^2.1.0, cross-fetch@^2.1.1: node-fetch "^2.6.7" whatwg-fetch "^2.0.4" +cross-fetch@^3.1.4: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -2421,7 +2759,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2467,7 +2805,7 @@ death@^1.1.0: resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2481,6 +2819,13 @@ debug@3.2.6: dependencies: ms "^2.1.1" +debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -2488,30 +2833,30 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== -decompress-response@^3.2.0, decompress-response@^3.3.0: +decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: mimic-response "^1.0.0" +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + deep-equal@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" @@ -2534,6 +2879,11 @@ defer-to-connect@^1.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + deferred-leveldown@~1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" @@ -2549,11 +2899,21 @@ deferred-leveldown@~4.0.0: abstract-leveldown "~5.0.0" inherits "^2.0.3" -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== +define-data-property@^1.0.1, define-data-property@^1.1.0, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -2579,10 +2939,10 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== +defined@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== delayed-stream@~1.0.0: version "1.0.0" @@ -2595,9 +2955,9 @@ depd@2.0.0: integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" @@ -2615,12 +2975,17 @@ detect-indent@^4.0.0: repeating "^2.0.0" detect-port@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" - integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== dependencies: address "^1.0.1" - debug "^2.6.0" + debug "4" + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== diffie-hellman@^5.0.0: version "5.0.3" @@ -2658,9 +3023,9 @@ dom-walk@^0.1.0: integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== dotenv@^16.0.1: - version "16.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" - integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== dotignore@~0.1.2: version "0.1.2" @@ -2674,6 +3039,11 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -2687,17 +3057,17 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@^3.1.6: - version "3.1.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" - integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== +ejs@^3.1.8: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" electron-to-chromium@^1.3.47: - version "1.4.199" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz#e0384fde79fdda89880e8be58196a9153e04db3b" - integrity sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg== + version "1.4.561" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" + integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -2712,21 +3082,16 @@ elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5 minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emoji-regex@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.1.0.tgz#d50e383743c0f7a5945c47087295afc112e3cf66" - integrity sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2771,40 +3136,65 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" - integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" has "^1.0.3" has-property-descriptors "^1.0.0" + has-proto "^1.0.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" is-negative-zero "^2.0.2" is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" + is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.0" + object-inspect "^1.12.3" object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.4.3" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" unbox-primitive "^1.0.2" + which-typed-array "^1.1.11" es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" @@ -2822,9 +3212,9 @@ es-to-primitive@^1.2.1: is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.61" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" - integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: es6-iterator "^2.0.3" es6-symbol "^3.1.3" @@ -2839,6 +3229,11 @@ es6-iterator@^2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" @@ -2875,30 +3270,30 @@ escodegen@1.8.x: source-map "~0.2.0" eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + version "8.10.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" + integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== eslint-config-standard@^17.0.0: - version "17.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz#fd5b6cf1dcf6ba8d29f200c461de2e19069888cf" - integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg== + version "17.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" + integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== +eslint-import-resolver-node@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" - resolve "^1.20.0" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-module-utils@^2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" - find-up "^2.1.0" eslint-plugin-es@^3.0.0: version "3.0.1" @@ -2909,23 +3304,27 @@ eslint-plugin-es@^3.0.0: regexpp "^3.0.0" eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" has "^1.0.3" - is-core-module "^2.8.1" + is-core-module "^2.13.0" is-glob "^4.0.3" minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + semver "^6.3.1" + tsconfig-paths "^3.14.2" eslint-plugin-node@^11.1.0: version "11.1.0" @@ -2947,33 +3346,18 @@ eslint-plugin-prettier@^4.2.1: prettier-linter-helpers "^1.0.0" eslint-plugin-promise@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" - integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== + version "6.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" + integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - eslint-utils@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -2981,128 +3365,67 @@ eslint-utils@^2.0.0: dependencies: eslint-visitor-keys "^1.1.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: +eslint-visitor-keys@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^5.6.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" - text-table "^0.2.0" +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.18.0: - version "8.20.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b" - integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA== - dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.51.0" + "@humanwhocodes/config-array" "^0.11.11" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.2" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.15.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" + is-path-inside "^3.0.3" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" -espree@^9.3.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.7.1" + acorn "^8.9.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.1" esprima@2.7.x, esprima@^2.7.1: version "2.7.3" @@ -3114,14 +3437,14 @@ esprima@^4.0.0, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0, esrecurse@^4.3.0: +esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -3133,11 +3456,6 @@ estraverse@^1.9.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -3316,6 +3634,16 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@scure/bip32" "1.3.1" + "@scure/bip39" "1.2.1" + ethereum-waffle@^3.4.4: version "3.4.4" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" @@ -3469,7 +3797,7 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.5: +ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.5: version "7.1.5" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== @@ -3549,40 +3877,53 @@ ethers@^4.0.32: xmlhttprequest "1.8.0" ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2, ethers@^5.6.9: - version "5.6.9" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" - integrity sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA== - dependencies: - "@ethersproject/abi" "5.6.4" - "@ethersproject/abstract-provider" "5.6.1" - "@ethersproject/abstract-signer" "5.6.2" - "@ethersproject/address" "5.6.1" - "@ethersproject/base64" "5.6.1" - "@ethersproject/basex" "5.6.1" - "@ethersproject/bignumber" "5.6.2" - "@ethersproject/bytes" "5.6.1" - "@ethersproject/constants" "5.6.1" - "@ethersproject/contracts" "5.6.2" - "@ethersproject/hash" "5.6.1" - "@ethersproject/hdnode" "5.6.2" - "@ethersproject/json-wallets" "5.6.1" - "@ethersproject/keccak256" "5.6.1" - "@ethersproject/logger" "5.6.0" - "@ethersproject/networks" "5.6.4" - "@ethersproject/pbkdf2" "5.6.1" - "@ethersproject/properties" "5.6.0" - "@ethersproject/providers" "5.6.8" - "@ethersproject/random" "5.6.1" - "@ethersproject/rlp" "5.6.1" - "@ethersproject/sha2" "5.6.1" - "@ethersproject/signing-key" "5.6.2" - "@ethersproject/solidity" "5.6.1" - "@ethersproject/strings" "5.6.1" - "@ethersproject/transactions" "5.6.2" - "@ethersproject/units" "5.6.1" - "@ethersproject/wallet" "5.6.2" - "@ethersproject/web" "5.6.1" - "@ethersproject/wordlists" "5.6.1" + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethers@^6.7.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.8.0.tgz#0a26f57e96fd697cefcfcef464e0c325689d1daf" + integrity sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q== + dependencies: + "@adraffy/ens-normalize" "1.10.0" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.5.0" ethjs-unit@0.1.6: version "0.1.6" @@ -3618,6 +3959,21 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -3632,13 +3988,13 @@ expand-brackets@^2.1.4: to-regex "^3.0.1" express@^4.14.0: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.0" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.5.0" @@ -3657,7 +4013,7 @@ express@^4.14.0: parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.10.3" + qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" send "0.18.0" @@ -3669,11 +4025,11 @@ express@^4.14.0: vary "~1.1.2" ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: - type "^2.5.0" + type "^2.7.2" extend-shallow@^2.0.1: version "2.0.1" @@ -3695,15 +4051,6 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3740,15 +4087,15 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== +fast-diff@^1.1.2, fast-diff@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== fast-glob@^3.0.3, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -3767,9 +4114,9 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" @@ -3780,20 +4127,6 @@ fetch-ponyfill@^4.0.0: dependencies: node-fetch "~1.7.1" -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -3801,7 +4134,7 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -filelist@^1.0.1: +filelist@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== @@ -3854,12 +4187,13 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - locate-path "^2.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" find-yarn-workspace-root@^1.2.1: version "1.2.1" @@ -3876,32 +4210,19 @@ find-yarn-workspace-root@^2.0.0: dependencies: micromatch "^4.0.2" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatted@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" - integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== flow-stoplight@^1.0.0: version "1.0.0" @@ -3909,9 +4230,9 @@ flow-stoplight@^1.0.0: integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== follow-redirects@^1.12.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" @@ -3925,15 +4246,28 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -4003,7 +4337,7 @@ fs-extra@^8.1, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.1.0: +fs-extra@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -4025,27 +4359,27 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== -functions-have-names@^1.2.2: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -4087,18 +4421,35 @@ ganache-core@^2.13.2: ethereumjs-wallet "0.6.5" web3 "1.2.11" +gemforge@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/gemforge/-/gemforge-2.6.4.tgz#41ef63ea3fafe994b0c1decce7426ab04bb7f2bc" + integrity sha512-82rIhbB2X4mrgZcSywMuelkfxiE6eeGaP1qyiGpvAq9cGR2YJOCsK532IJZ/nQCBF9uaRJM8t6fyaqkD1kosXw== + dependencies: + "@solidity-parser/parser" "^0.16.1" + chalk "^5.3.0" + commander "^11.0.0" + ethers "^6.7.1" + execa "^7.2.0" + glob "^10.3.3" + lodash.get "^4.4.2" + semver "^7.5.4" + spdx-license-ids "^3.0.13" + tmp "^0.2.1" + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" - integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" has "^1.0.3" + has-proto "^1.0.1" has-symbols "^1.0.3" get-package-type@^0.1.0: @@ -4106,11 +4457,6 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== - get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -4125,6 +4471,11 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-symbol-description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" @@ -4160,13 +4511,24 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" +glob@^10.3.3: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" + glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -4178,7 +4540,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@~7.2.0: +glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@~7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4191,9 +4553,9 @@ glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@~7.2.0: path-is-absolute "^1.0.0" glob@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -4225,15 +4587,10 @@ global@~4.4.0: min-document "^2.19.0" process "^0.11.10" -globals@^11.7.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== +globals@^13.19.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -4242,6 +4599,13 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" @@ -4256,7 +4620,7 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.0, globby@^11.0.1, globby@^11.1.0: +globby@^11.0.0, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -4268,6 +4632,32 @@ globby@^11.0.0, globby@^11.0.1, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== + dependencies: + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" + got@9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -4285,38 +4675,40 @@ got@9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== handlebars@^4.0.1, handlebars@^4.7.6: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: minimist "^1.2.5" - neo-async "^2.6.0" + neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" optionalDependencies: @@ -4369,23 +4761,16 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" @@ -4425,11 +4810,9 @@ has-values@^1.0.0: kind-of "^4.0.0" has@^1.0.3, has@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== hash-base@^3.0.0: version "3.1.0" @@ -4484,9 +4867,9 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-errors@2.0.0: version "2.0.0" @@ -4513,12 +4896,33 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +http2-wrapper@^2.1.10: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + hyperlinker@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4544,15 +4948,10 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.1, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== immediate@^3.2.3: version "3.3.0" @@ -4564,15 +4963,7 @@ immediate@~3.2.3: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -4608,31 +4999,12 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: - get-intrinsic "^1.1.0" + get-intrinsic "^1.2.0" has "^1.0.3" side-channel "^1.0.4" @@ -4680,6 +5052,15 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -4705,10 +5086,10 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-ci@^2.0.0: version "2.0.0" @@ -4717,10 +5098,10 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" @@ -4763,11 +5144,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== - is-docker@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" @@ -4807,11 +5183,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -4865,15 +5236,10 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" @@ -4890,11 +5256,6 @@ is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -4902,11 +5263,16 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" -is-stream@^1.0.0, is-stream@^1.0.1: +is-stream@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -4921,16 +5287,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.3, is-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" - integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.20.0" - for-each "^0.3.3" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.11" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -4976,6 +5338,11 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4998,23 +5365,24 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + version "10.8.7" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== dependencies: async "^3.2.3" chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" + filelist "^1.0.4" + minimatch "^3.1.2" js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" @@ -5036,7 +5404,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== -js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.14.1: +js-yaml@3.x, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -5071,10 +5439,15 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: version "3.8.0" @@ -5105,6 +5478,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" @@ -5116,11 +5494,11 @@ json-stable-stringify-without-jsonify@^1.0.1: integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== dependencies: - jsonify "~0.0.0" + jsonify "^0.0.1" json-stringify-safe@~5.0.1: version "5.0.1" @@ -5132,17 +5510,17 @@ json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" json5@^2.1.3: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^2.1.0: version "2.4.0" @@ -5167,10 +5545,10 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== jsonschema@^1.2.4: version "1.4.1" @@ -5196,9 +5574,9 @@ keccak@3.0.1: node-gyp-build "^4.2.0" keccak@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== dependencies: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" @@ -5211,6 +5589,13 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" +keyv@^4.0.0, keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5396,14 +5781,6 @@ levelup@^1.2.1: semver "~5.4.1" xtend "~4.0.0" -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -5412,10 +5789,23 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -5423,30 +5813,39 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" + p-locate "^5.0.0" lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + lodash@4.17.20: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5478,6 +5877,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + lru-cache@5.1.1, lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -5499,6 +5903,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +"lru-cache@^9.1.1 || ^10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== + ltgt@^2.1.2, ltgt@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" @@ -5509,6 +5918,11 @@ ltgt@~2.1.1: resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -5569,6 +5983,11 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -5606,6 +6025,11 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -5658,16 +6082,21 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -5685,31 +6114,31 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +minimatch@^5.0.0, minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^2.0.1" -minimatch@^5.0.0, minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" @@ -5719,6 +6148,11 @@ minipass@^2.6.0, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + minizlib@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -5742,9 +6176,9 @@ mkdirp-promise@^5.0.1: mkdirp "*" mkdirp@*: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.6" @@ -5758,6 +6192,18 @@ mock-fs@^4.1.0: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== +mock-property@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mock-property/-/mock-property-1.0.2.tgz#82791adffeebbda94705a48cab267586d2e0508a" + integrity sha512-GHVKHd3bFiXtvZtp23+8+EQLMeDJWcEVrSA2pOBs1KB5Uh2ww8Q+9fYDljS67k3GzU4DIDBa6+qRIgfZ2Bp+gQ== + dependencies: + define-data-property "^1.1.0" + functions-have-names "^1.2.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + isarray "^2.0.5" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5813,11 +6259,6 @@ multihashes@^0.4.15, multihashes@~0.4.15: multibase "^0.7.0" varint "^5.0.0" -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== - nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" @@ -5855,7 +6296,7 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.0: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -5882,10 +6323,10 @@ node-emoji@^1.10.0: dependencies: lodash "^4.17.21" -node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -5898,9 +6339,9 @@ node-fetch@~1.7.1: is-stream "^1.0.1" node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" - integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== nopt@3.x: version "3.0.6" @@ -5924,6 +6365,18 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -5956,10 +6409,15 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.12.0, object-inspect@^1.9.0, object-inspect@~1.12.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-inspect@~1.12.3: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== object-is@^1.0.1: version "1.1.5" @@ -5991,25 +6449,45 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: - array.prototype.reduce "^1.0.4" call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.getownpropertydescriptors@^2.1.6: + version "2.1.7" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" + integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== + dependencies: + array.prototype.reduce "^1.0.6" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + safe-array-concat "^1.0.0" + +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" object.pick@^1.3.0: version "1.3.0" @@ -6018,14 +6496,14 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.2.0" + es-abstract "^1.22.1" oboe@2.1.4: version "2.1.4" @@ -6055,12 +6533,12 @@ once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== dependencies: - mimic-fn "^1.0.0" + mimic-fn "^4.0.0" open@^7.4.2: version "7.4.2" @@ -6070,7 +6548,7 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -optionator@^0.8.1, optionator@^0.8.2: +optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -6082,17 +6560,17 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" os-homedir@^1.0.0: version "1.0.2" @@ -6111,46 +6589,34 @@ os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - p-limit "^1.1.0" + yocto-queue "^0.1.0" -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + p-limit "^3.0.2" parent-module@^1.0.0: version "1.0.1" @@ -6182,13 +6648,15 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: + "@babel/code-frame" "^7.0.0" error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" parseurl@~1.3.3: version "1.3.3" @@ -6201,12 +6669,12 @@ pascalcase@^0.1.1: integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== password-prompt@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923" - integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.3.tgz#05e539f4e7ca4d6c865d479313f10eb9db63ee5f" + integrity sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw== dependencies: - ansi-escapes "^3.1.0" - cross-spawn "^6.0.5" + ansi-escapes "^4.3.2" + cross-spawn "^7.0.3" patch-package@6.2.2: version "6.2.2" @@ -6227,23 +6695,24 @@ patch-package@6.2.2: tmp "^0.0.33" patch-package@^6.2.2: - version "6.4.7" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" - integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== + version "6.5.1" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.1.tgz#3e5d00c16997e6160291fee06a521c42ac99b621" + integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA== dependencies: "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" + chalk "^4.1.2" cross-spawn "^6.0.5" find-yarn-workspace-root "^2.0.0" - fs-extra "^7.0.1" + fs-extra "^9.0.0" is-ci "^2.0.0" klaw-sync "^6.0.0" - minimist "^1.2.0" + minimist "^1.2.6" open "^7.4.2" rimraf "^2.6.3" semver "^5.6.0" slash "^2.0.0" tmp "^0.0.33" + yaml "^1.10.2" path-browserify@^1.0.0: version "1.0.1" @@ -6257,21 +6726,16 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -6282,11 +6746,24 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -6349,6 +6826,11 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -6374,11 +6856,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== - prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" @@ -6392,26 +6869,18 @@ prettier-linter-helpers@^1.0.0: fast-diff "^1.1.2" prettier-plugin-solidity@^1.0.0-beta.19: - version "1.0.0-dev.23" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-dev.23.tgz#e1edf0693d69fe1518519ab704d5e46ee4f842fc" - integrity sha512-440/jZzvtDJcqtoRCQiigo1DYTPAZ85pjNg7gvdd+Lds6QYgID8RyOdygmudzHdFmV2UfENt//A8tzx7iS58GA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz#9a35124f578404caf617634a8cab80862d726cba" + integrity sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg== dependencies: - "@solidity-parser/parser" "^0.14.3" - emoji-regex "^10.1.0" - escape-string-regexp "^4.0.0" - semver "^7.3.7" + "@solidity-parser/parser" "^0.16.0" + semver "^7.3.8" solidity-comments-extractor "^0.0.7" - string-width "^4.2.3" - -prettier@^1.14.3: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.1.2, prettier@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== +prettier@^2.1.2, prettier@^2.7.1, prettier@^2.8.3: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== private@^0.1.6, private@^0.1.8: version "0.1.8" @@ -6428,11 +6897,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-to-callback@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" @@ -6513,9 +6977,9 @@ pull-pushable@^2.0.0: integrity sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg== pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: - version "3.6.14" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" - integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== + version "3.7.0" + resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.7.0.tgz#85de0e44ff38a4d2ad08cc43fc458e1922f9bf0b" + integrity sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw== pull-window@^2.1.4: version "2.1.4" @@ -6532,25 +6996,32 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - punycode@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@^6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== dependencies: side-channel "^1.0.4" @@ -6568,16 +7039,16 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -6608,6 +7079,16 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -6636,9 +7117,9 @@ readable-stream@^1.0.33: string_decoder "~0.10.x" readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -6649,9 +7130,9 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable util-deprecate "~1.0.1" readable-stream@^3.0.6, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -6675,11 +7156,11 @@ rechoir@^0.6.2: resolve "^1.1.6" recursive-readdir@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== dependencies: - minimatch "3.0.4" + minimatch "^3.0.5" redeyed@~2.1.0: version "2.1.1" @@ -6715,21 +7196,16 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0, regexpp@^3.2.0: +regexpp@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -6808,7 +7284,7 @@ require-from-string@^1.1.0: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== -require-from-string@^2.0.0: +require-from-string@^2.0.0, require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== @@ -6818,10 +7294,10 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-from@^4.0.0: version "4.0.0" @@ -6838,12 +7314,12 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.8.1, resolve@~1.22.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.22.4, resolve@^1.8.1, resolve@~1.22.6: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -6854,20 +7330,12 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: - through "~2.3.4" + lowercase-keys "^2.0.0" ret@~0.1.10: version "0.1.15" @@ -6879,13 +7347,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - rimraf@^2.2.8, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -6893,7 +7354,7 @@ rimraf@^2.2.8, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -6915,11 +7376,6 @@ rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^5.2.0" -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -6932,12 +7388,15 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@^6.4.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: - tslib "^1.9.0" + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" @@ -6956,6 +7415,15 @@ safe-event-emitter@^1.0.1: dependencies: events "^3.0.0" +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -7024,20 +7492,20 @@ semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.1.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.1.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.4, semver@^7.3.7: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== +semver@^7.3.2, semver@^7.3.4, semver@^7.3.8, semver@^7.5.2, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" @@ -7091,6 +7559,25 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" @@ -7171,11 +7658,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.2: +signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -7205,14 +7697,14 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" snapdragon-node@^2.0.1: version "2.1.1" @@ -7244,10 +7736,10 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -solc@0.8.17: - version "0.8.17" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.17.tgz#c748fec6a64bf029ec406aa9b37e75938d1115ae" - integrity sha512-Dtidk2XtTTmkB3IKdyeg6wLYopJnBVxdoykN8oP8VY3PQjN16BScYoUJTXFm2OP7P0hXNAqWiJNmmfuELtLf8g== +solc@0.8.20: + version "0.8.20" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.20.tgz#b49151cf5ecc8de088d3d32b0afb607b3522ba8d" + integrity sha512-fPRnGspIEqmhu63RFO3pc79sLA7ZmzO0Uy0L5l6hEt2wAsq0o7UV6pXkAp3Mfv9IBhg7Px/oTu3a+y4gs3BWrQ== dependencies: command-exists "^1.2.8" commander "^8.1.0" @@ -7283,26 +7775,29 @@ solc@^0.6.3, solc@^0.6.7: tmp "0.0.33" solhint@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.7.tgz#b5da4fedf7a0fee954cb613b6c55a5a2b0063aa7" - integrity sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ== - dependencies: - "@solidity-parser/parser" "^0.14.1" - ajv "^6.6.1" - antlr4 "4.7.1" - ast-parents "0.0.1" - chalk "^2.4.2" - commander "2.18.0" - cosmiconfig "^5.0.7" - eslint "^5.6.0" - fast-diff "^1.1.2" - glob "^7.1.3" - ignore "^4.0.6" - js-yaml "^3.12.0" - lodash "^4.17.11" - semver "^6.3.0" + version "3.6.2" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.6.2.tgz#2b2acbec8fdc37b2c68206a71ba89c7f519943fe" + integrity sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ== + dependencies: + "@solidity-parser/parser" "^0.16.0" + ajv "^6.12.6" + antlr4 "^4.11.0" + ast-parents "^0.0.1" + chalk "^4.1.2" + commander "^10.0.0" + cosmiconfig "^8.0.0" + fast-diff "^1.2.0" + glob "^8.0.3" + ignore "^5.2.4" + js-yaml "^4.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + semver "^7.5.2" + strip-ansi "^6.0.1" + table "^6.8.1" + text-table "^0.2.0" optionalDependencies: - prettier "^1.14.3" + prettier "^2.8.3" solidity-comments-extractor@^0.0.7: version "0.0.7" @@ -7310,9 +7805,9 @@ solidity-comments-extractor@^0.0.7: integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== solidity-coverage@^0.7.21: - version "0.7.21" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.21.tgz#20c5615a3a543086b243c2ca36e2951a75316b40" - integrity sha512-O8nuzJ9yXiKUx3NdzVvHrUW0DxoNVcGzq/I7NzewNO9EZE3wYAQ4l8BwcnV64r4aC/HB6Vnw/q2sF0BQHv/3fg== + version "0.7.22" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.22.tgz#168f414be4c0f5303addcf3ab9714cf64f72c080" + integrity sha512-I6Zd5tsFY+gmj1FDIp6w7OrUePx6ZpMgKQZg7dWgPaQHePLi3Jk+iJ8lwZxsWEoNy2Lcv91rMxATWHqRaFdQpw== dependencies: "@solidity-parser/parser" "^0.14.0" "@truffle/provider" "^0.2.24" @@ -7400,9 +7895,9 @@ source-map@~0.2.0: amdefine ">=0.0.4" spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -7420,10 +7915,10 @@ spdx-expression-parse@^3.0.0: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" -spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== +spdx-license-ids@^3.0.0, spdx-license-ids@^3.0.13: + version "3.0.16" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -7438,9 +7933,9 @@ sprintf-js@~1.0.2: integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + version "1.18.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -7478,6 +7973,16 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + name string-width-cjs + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -7487,58 +7992,41 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" -string.prototype.trim@~1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz#824960787db37a9e24711802ed0c1d1c0254f83e" - integrity sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ== +string.prototype.trim@^1.2.8, string.prototype.trim@~1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.1.1: version "1.3.0" @@ -7559,6 +8047,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -7566,26 +8061,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: - ansi-regex "^5.0.1" + ansi-regex "^6.0.1" strip-bom@^2.0.0: version "2.0.0" @@ -7599,6 +8080,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -7606,12 +8092,7 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -7663,15 +8144,15 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== swarm-js@^0.1.40: - version "0.1.40" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" - integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== dependencies: bluebird "^3.5.0" buffer "^5.0.5" eth-lib "^0.1.26" fs-extra "^4.0.2" - got "^7.1.0" + got "^11.8.5" mime-types "^2.1.16" mkdirp-promise "^5.0.1" mock-fs "^4.1.0" @@ -7679,36 +8160,38 @@ swarm-js@^0.1.40: tar "^4.0.2" xhr-request "^1.0.1" -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +table@^6.8.1: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" tape@^4.6.3: - version "4.15.1" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.15.1.tgz#88fb662965a11f9be1bddb04c11662d7eceb129e" - integrity sha512-k7F5pyr91n9D/yjSJwbLLYDCrTWXxMSXbbmHX2n334lSIc2rxeXyFkaBv4UuUd2gBYMrAOalPutAiCxC6q1qbw== + version "4.17.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.17.0.tgz#de89f3671ddc5dad178d04c28dc6b0183f42268e" + integrity sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw== dependencies: + "@ljharb/resumer" "~0.0.1" + "@ljharb/through" "~2.3.9" call-bind "~1.0.2" deep-equal "~1.1.1" - defined "~1.0.0" + defined "~1.0.1" dotignore "~0.1.2" for-each "~0.3.3" - glob "~7.2.0" + glob "~7.2.3" has "~1.0.3" inherits "~2.0.4" is-regex "~1.1.4" - minimist "~1.2.6" - object-inspect "~1.12.0" - resolve "~1.22.0" - resumer "~0.0.0" - string.prototype.trim "~1.2.5" - through "~2.3.8" + minimist "~1.2.8" + mock-property "~1.0.0" + object-inspect "~1.12.3" + resolve "~1.22.6" + string.prototype.trim "~1.2.8" tar@^4.0.2: version "4.4.19" @@ -7749,12 +8232,7 @@ through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@~2.3.4, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -timed-out@^4.0.0, timed-out@^4.0.1: +timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== @@ -7773,6 +8251,13 @@ tmp@0.1.0: dependencies: rimraf "^2.6.3" +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -7863,26 +8348,45 @@ ts-generator@^0.1.1: resolve "^1.8.1" ts-essentials "^1.0.0" -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" + json5 "^1.0.2" minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.0, tslib@^2.3.1: +tslib@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +tslib@^2.5.0, tslib@^2.6.1, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -7942,10 +8446,10 @@ type@^1.0.1: resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -type@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" - integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== typechain@^3.0.0: version "3.0.0" @@ -7960,6 +8464,45 @@ typechain@^3.0.0: ts-essentials "^6.0.3" ts-generator "^0.1.1" +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -7995,9 +8538,9 @@ typical@^2.6.0, typical@^2.6.1: integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== uglify-js@^3.1.4: - version "3.16.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.16.3.tgz#94c7a63337ee31227a18d03b8a3041c210fd1f1d" - integrity sha512-uVbFqx9vvLhQg0iBaau9Z75AxWJ8tqM9AV890dIZCLApF4rTcyHwmAvLeEdYRs+BzYWu8Iw81F79ah0EfTXbaw== + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== ultron@~1.1.0: version "1.1.1" @@ -8019,6 +8562,11 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -8069,13 +8617,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== - dependencies: - prepend-http "^1.0.1" - url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" @@ -8088,18 +8629,13 @@ url-set-query@^1.0.0: resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== - url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== + version "0.11.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" + integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== dependencies: - punycode "1.3.2" - querystring "0.2.0" + punycode "^1.4.1" + qs "^6.11.2" use@^3.1.0: version "3.1.1" @@ -8107,9 +8643,9 @@ use@^3.1.0: integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== utf-8-validate@^5.0.2: - version "5.0.9" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" - integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== dependencies: node-gyp-build "^4.3.0" @@ -8124,26 +8660,27 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.2.tgz#02b3dbadbb80071eee4c43aed58747afdfc516db" + integrity sha512-PBdZ03m1kBnQ5cjjO0ZvJMJS+QsbyIcFwi4hY4U76OQsCO9JrOYjbCFgIF76ccFg9xnJo7ZHPkqyj1GqmdS7MA== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" + call-bind "^1.0.2" + define-properties "^1.2.0" for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" + has-proto "^1.0.1" + has-symbols "^1.0.3" + object.getownpropertydescriptors "^2.1.6" + safe-array-concat "^1.0.0" -util@^0.12.0: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== +util@^0.12.0, util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" is-arguments "^1.0.4" is-generator-function "^1.0.7" is-typed-array "^1.1.3" - safe-buffer "^5.1.2" which-typed-array "^1.1.2" utils-merge@1.0.1: @@ -8166,10 +8703,15 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +uuid@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== validate-npm-package-license@^3.0.1: version "3.0.4" @@ -8198,6 +8740,15 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +web3-bzz@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.10.0.tgz#ac74bc71cdf294c7080a79091079192f05c5baed" + integrity sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + web3-bzz@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" @@ -8217,6 +8768,14 @@ web3-bzz@1.7.4: got "9.6.0" swarm-js "^0.1.40" +web3-core-helpers@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.10.0.tgz#1016534c51a5df77ed4f94d1fcce31de4af37fad" + integrity sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g== + dependencies: + web3-eth-iban "1.10.0" + web3-utils "1.10.0" + web3-core-helpers@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" @@ -8234,6 +8793,17 @@ web3-core-helpers@1.7.4: web3-eth-iban "1.7.4" web3-utils "1.7.4" +web3-core-method@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.10.0.tgz#82668197fa086e8cc8066742e35a9d72535e3412" + integrity sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.10.0" + web3-core-promievent "1.10.0" + web3-core-subscriptions "1.10.0" + web3-utils "1.10.0" + web3-core-method@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" @@ -8257,6 +8827,13 @@ web3-core-method@1.7.4: web3-core-subscriptions "1.7.4" web3-utils "1.7.4" +web3-core-promievent@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.10.0.tgz#cbb5b3a76b888df45ed3a8d4d8d4f54ccb66a37b" + integrity sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg== + dependencies: + eventemitter3 "4.0.4" + web3-core-promievent@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" @@ -8271,6 +8848,17 @@ web3-core-promievent@1.7.4: dependencies: eventemitter3 "4.0.4" +web3-core-requestmanager@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.10.0.tgz#4b34f6e05837e67c70ff6f6993652afc0d54c340" + integrity sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ== + dependencies: + util "^0.12.5" + web3-core-helpers "1.10.0" + web3-providers-http "1.10.0" + web3-providers-ipc "1.10.0" + web3-providers-ws "1.10.0" + web3-core-requestmanager@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" @@ -8293,6 +8881,14 @@ web3-core-requestmanager@1.7.4: web3-providers-ipc "1.7.4" web3-providers-ws "1.7.4" +web3-core-subscriptions@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.10.0.tgz#b534592ee1611788fc0cb0b95963b9b9b6eacb7c" + integrity sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.0" + web3-core-subscriptions@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" @@ -8310,6 +8906,19 @@ web3-core-subscriptions@1.7.4: eventemitter3 "4.0.4" web3-core-helpers "1.7.4" +web3-core@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.10.0.tgz#9aa07c5deb478cf356c5d3b5b35afafa5fa8e633" + integrity sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ== + dependencies: + "@types/bn.js" "^5.1.1" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-core-requestmanager "1.10.0" + web3-utils "1.10.0" + web3-core@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" @@ -8336,6 +8945,14 @@ web3-core@1.7.4: web3-core-requestmanager "1.7.4" web3-utils "1.7.4" +web3-eth-abi@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.10.0.tgz#53a7a2c95a571e205e27fd9e664df4919483cce1" + integrity sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.10.0" + web3-eth-abi@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" @@ -8353,6 +8970,22 @@ web3-eth-abi@1.7.4: "@ethersproject/abi" "^5.6.3" web3-utils "1.7.4" +web3-eth-accounts@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.10.0.tgz#2942beca0a4291455f32cf09de10457a19a48117" + integrity sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q== + dependencies: + "@ethereumjs/common" "2.5.0" + "@ethereumjs/tx" "3.3.2" + eth-lib "0.2.8" + ethereumjs-util "^7.1.5" + scrypt-js "^3.0.1" + uuid "^9.0.0" + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-utils "1.10.0" + web3-eth-accounts@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" @@ -8387,6 +9020,20 @@ web3-eth-accounts@1.7.4: web3-core-method "1.7.4" web3-utils "1.7.4" +web3-eth-contract@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.10.0.tgz#8e68c7654576773ec3c91903f08e49d0242c503a" + integrity sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w== + dependencies: + "@types/bn.js" "^5.1.1" + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-core-promievent "1.10.0" + web3-core-subscriptions "1.10.0" + web3-eth-abi "1.10.0" + web3-utils "1.10.0" + web3-eth-contract@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" @@ -8416,6 +9063,20 @@ web3-eth-contract@1.7.4: web3-eth-abi "1.7.4" web3-utils "1.7.4" +web3-eth-ens@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.10.0.tgz#96a676524e0b580c87913f557a13ed810cf91cd9" + integrity sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-promievent "1.10.0" + web3-eth-abi "1.10.0" + web3-eth-contract "1.10.0" + web3-utils "1.10.0" + web3-eth-ens@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" @@ -8445,6 +9106,14 @@ web3-eth-ens@1.7.4: web3-eth-contract "1.7.4" web3-utils "1.7.4" +web3-eth-iban@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.10.0.tgz#5a46646401965b0f09a4f58e7248c8a8cd22538a" + integrity sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg== + dependencies: + bn.js "^5.2.1" + web3-utils "1.10.0" + web3-eth-iban@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" @@ -8461,6 +9130,18 @@ web3-eth-iban@1.7.4: bn.js "^5.2.1" web3-utils "1.7.4" +web3-eth-personal@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.10.0.tgz#94d525f7a29050a0c2a12032df150ac5ea633071" + integrity sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-net "1.10.0" + web3-utils "1.10.0" + web3-eth-personal@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" @@ -8485,6 +9166,24 @@ web3-eth-personal@1.7.4: web3-net "1.7.4" web3-utils "1.7.4" +web3-eth@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.10.0.tgz#38b905e2759697c9624ab080cfcf4e6c60b3a6cf" + integrity sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA== + dependencies: + web3-core "1.10.0" + web3-core-helpers "1.10.0" + web3-core-method "1.10.0" + web3-core-subscriptions "1.10.0" + web3-eth-abi "1.10.0" + web3-eth-accounts "1.10.0" + web3-eth-contract "1.10.0" + web3-eth-ens "1.10.0" + web3-eth-iban "1.10.0" + web3-eth-personal "1.10.0" + web3-net "1.10.0" + web3-utils "1.10.0" + web3-eth@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" @@ -8522,6 +9221,15 @@ web3-eth@1.7.4: web3-net "1.7.4" web3-utils "1.7.4" +web3-net@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.10.0.tgz#be53e7f5dafd55e7c9013d49c505448b92c9c97b" + integrity sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA== + dependencies: + web3-core "1.10.0" + web3-core-method "1.10.0" + web3-utils "1.10.0" + web3-net@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" @@ -8566,6 +9274,16 @@ web3-provider-engine@14.2.1: xhr "^2.2.0" xtend "^4.0.1" +web3-providers-http@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.10.0.tgz#864fa48675e7918c9a4374e5f664b32c09d0151b" + integrity sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA== + dependencies: + abortcontroller-polyfill "^1.7.3" + cross-fetch "^3.1.4" + es6-promise "^4.2.8" + web3-core-helpers "1.10.0" + web3-providers-http@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" @@ -8582,6 +9300,14 @@ web3-providers-http@1.7.4: web3-core-helpers "1.7.4" xhr2-cookies "1.1.0" +web3-providers-ipc@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.10.0.tgz#9747c7a6aee96a51488e32fa7c636c3460b39889" + integrity sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.10.0" + web3-providers-ipc@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" @@ -8599,6 +9325,15 @@ web3-providers-ipc@1.7.4: oboe "2.1.5" web3-core-helpers "1.7.4" +web3-providers-ws@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.10.0.tgz#cb0b87b94c4df965cdf486af3a8cd26daf3975e5" + integrity sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.0" + websocket "^1.0.32" + web3-providers-ws@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" @@ -8618,6 +9353,16 @@ web3-providers-ws@1.7.4: web3-core-helpers "1.7.4" websocket "^1.0.32" +web3-shh@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.10.0.tgz#c2979b87e0f67a7fef2ce9ee853bd7bfbe9b79a8" + integrity sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg== + dependencies: + web3-core "1.10.0" + web3-core-method "1.10.0" + web3-core-subscriptions "1.10.0" + web3-net "1.10.0" + web3-shh@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" @@ -8638,6 +9383,19 @@ web3-shh@1.7.4: web3-core-subscriptions "1.7.4" web3-net "1.7.4" +web3-utils@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.0.tgz#ca4c1b431a765c14ac7f773e92e0fd9377ccf578" + integrity sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg== + dependencies: + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + web3-utils@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" @@ -8652,7 +9410,7 @@ web3-utils@1.2.11: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.7.4, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: +web3-utils@1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== @@ -8665,6 +9423,33 @@ web3-utils@1.7.4, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: randombytes "^2.1.0" utf8 "3.0.0" +web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.3.tgz#f1db99c82549c7d9f8348f04ffe4e0188b449714" + integrity sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.10.0.tgz#2fde0009f59aa756c93e07ea2a7f3ab971091274" + integrity sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng== + dependencies: + web3-bzz "1.10.0" + web3-core "1.10.0" + web3-eth "1.10.0" + web3-eth-personal "1.10.0" + web3-net "1.10.0" + web3-shh "1.10.0" + web3-utils "1.10.0" + web3@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" @@ -8749,17 +9534,16 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== -which-typed-array@^1.1.2: - version "1.1.8" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" - integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== +which-typed-array@^1.1.11, which-typed-array@^1.1.2: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.20.0" + call-bind "^1.0.4" for-each "^0.3.3" + gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.9" which@^1.1.1, which@^1.2.9, which@^1.3.1: version "1.3.1" @@ -8787,16 +9571,26 @@ window-size@^0.2.0: resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + name wrap-ansi-cjs + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -8814,32 +9608,30 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -8930,6 +9722,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -8962,3 +9759,13 @@ yarn@^1.22.19: version "1.22.19" resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==